我试图覆盖 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);
});

09-27 22:03