所以我有一个像这样的剧本
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
$("a[href*='http://']:not([href*='"+location.hostname+"'])").attr("target","_blank");
$("a[target!='_blank'][target!='_top']").click(function(){
var url=$(this).attr("href")+'?jquery=1';
ajaxpage(url,'actualcontent');
window.location.hash=$(this).attr("href");
return false;
});
});
</script>
它很有效。这意味着我的所有链接都在DIV中动态加载 - 非常棒。但是,在这些div中加载的链接在单击时不会动态加载。如果我在其中包含此脚本,它仍然无法正常工作。在一个类似的说明中,有没有一种方法可以在页面中制作动态加载的javascript?没有将它包含在原始标题中?
感谢。
答案 0 :(得分:2)
免责声明: 要使用此解决方案,您需要升级到jQuery 1.3或jQuery 1.4 +
(但是你应该,自1.2.6以来有许多性能改进和错误修复)
而不是.click()
,您可以在此使用.live()
,如下所示:
$("a[target!='_blank'][target!='_top']").live('click', function(){
.live()
也适用于动态添加的元素,因为它正在click
监听冒泡的document
事件,而不是元素本身的处理程序。
答案 1 :(得分:2)
不确定您的问题是什么。你是说在这个函数之后添加的链接不使用这个函数?提示,您需要重新扫描页面以更新该div中的链接,或者您可以避免这种情况并使用live()。
答案 2 :(得分:0)
使用.delegate()
// Don't need to put this in a $(document).ready() callback.
$(document).delegate("a[target!='_blank'][target!='_top']", "click", function(e){
var url=$(this).attr("href")+'?jquery=1';
ajaxpage(url,'actualcontent');
window.location.hash=$(this).attr("href");
e.preventDefault();
return false;
});
$(document).delegate("a[href*='http://']:not([href*='"+location.hostname+"'])", "click", function(){
// lazy attr setting, reduces query cost
$(this).attr("target", "_blank")
});