嗨,正如我的标题所建议的,我使用以下代码来动态加载页面的一部分(此处为ID)
function callBackFunctionLoadNextBackInPage(data) { //alert(data); $("#left").fadeTo(100,1); var data = $(data).find( '#left' ); $("#left").html(data); if(supports_history_api()) { history.pushState(null, null, loadNextBackInPage_URL); if(!popEventListnerAdded) { window.addEventListener("popstate", function(e) { loadNextBackInPage(location.href); },false); popEventListnerAdded = true; } } else { } } function loadNextBackInPage(url,parm) { //alert(url); loadNextBackInPage_URL = url; $("#left").fadeTo(100,.2); $.post(url,parm,callBackFunctionLoadNextBackInPage,'html'); }
这是我的操作方法示例(单击显示详细信息链接)
问题是:
它加载正确…但是javascript无法正常工作。例如:1.我使用“讨论”来发表评论,但在以下部分中将不进行讨论
使用Facebook,Twitter,Yahoo!,DISQUS,OpenID或Anonymus添加评论
但是,如果刷新浏览器,它确实可以正确加载…我仅首先加载所有需要的脚本…那么为什么它不起作用?
另外例如:SHARE(单击此处)按钮应使用以下代码展开:
<script language="javascript" type="text/javascript"> function showHideDiv() { var divstyle = new String(); divstyle = document.getElementById("share").style.display; if(divstyle.toLowerCase()=="block" || divstyle == "") { document.getElementById("share").style.display = 'none'; } else { document.getElementById("share").style.display = 'block'; } } </script>
但是它没有!…但是如果我刷新页面(即再次加载该URL),则可以使用
主要是我希望讨论评论功能起作用。我使用以下代码生成它
<div class="entry"> <h2>Add a Comment using Facebook, Twitter, Yahoo!, DISQUS, OpenID or Anonymus </h2> <p> <div id="disqus_thread"></div> <script> /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ var disqus_shortname = '[written here]'; // required: replace example with your forum shortname // The following are highly recommended additional parameters. Remove the slashes in front to use. var disqus_identifier = 'page=show_song_details.php&songid=<?php echo $sid ?>&n=0&back=no'; var disqus_url = '<?php echo $main_root.$_SERVER['REQUEST_URI']; ?>'; var disqus_developer = 1 ; /* * * DON'T EDIT BELOW THIS LINE * * */ (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); </script> <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> </p> </div>
问题在于,<script>只要您从HTML字符串创建jQuery对象以对其进行一些DOM操作,jQuery就会剥离标签.find()。
<script>
.find()
最好的选择是将整个HTML阅读为文本,然后使用正则表达式将其切碎并将相关部分放入文档中。您还应该考虑重新设计项目的一部分,因为我认为用部分脚本加载外部页面的部分不是一个好习惯,从长期来看可能很难维护。除非当然是经过深思熟虑的模块化设计,否则您就知道并知道自己在做什么。