我试图覆盖 anchor 标记的默认行为,以便可以将服务器上的网页加载到现有的div中,而不是新的标签或窗口中。
到目前为止,我有:
myContainer.click(function(){
event.preventDefault();
$('a').click(function(){
var link = $(this).attr('href');
myContainer.load(link);
});
});
在chrome中,我必须先两次单击链接,然后才能执行任何操作;在IE中,FF根本不起作用,并使用新链接刷新页面。
任何帮助深表感谢。
最佳答案
不应该只是:
$('a').click(function(e) {
e.preventDefault();
myContainer.load(this.href);
});
您的代码在点击处理程序中分配了一个点击处理程序。因此,第一次单击会将单击处理程序附加到链接,而第二次单击(在链接上)将执行新的单击处理程序。
看来您只需要一个点击处理程序即可。如果链接是动态添加的,则可以使用
.on()
( .live
和 .delegate
的后继):myContainer.on('click', 'a', function(e) {
e.preventDefault();
myContainer.load(this.href);
});
// or
$(document).on('click', 'a', function(e) {
e.preventDefault();
myContainer.load(this.href);
});