foo*_*oty 1 javascript ajax jquery html5
嗨,正如我的标题建议,我使用以下代码动态加载页面的一部分(这里左侧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');
}
Run Code Online (Sandbox Code Playgroud)
这是我如何做的一个例子(点击显示详细信息链接
问题是:
它正确加载......但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>
Run Code Online (Sandbox Code Playgroud)
但它没有!...但如果我刷新页面(即再次加载网址),则有效
主要是我想讨论评论的事情.我使用以下代码生成它
<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>
Run Code Online (Sandbox Code Playgroud)
问题是<script>,在你的情况下,每当你从HTML字符串创建一个jQuery对象时,jQuery 都会删除标签,以对它进行一些DOM操作.find().
最好的办法是将整个HTML作为文本阅读,然后使用正则表达式将其删除并将相关部分放入文档中.您还应该考虑重新设计项目的一部分,因为在我看来,使用部分脚本加载外部页面的部分并不是一种好的做法,并且从长远来看可能难以维护.除非它是一个经过深思熟虑的模块化设计,你已经到了那里,你知道你在做什么.
这个问题与另一个帖子完全相同,但由于赏金,我不能投票决定关闭它.看看我的答案,看看它是否有帮助:jquery:在.find()之后保留<script>标签
| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |