繁体   English   中英

使用jquery覆盖锚标记的默认行为

[英]Overriding default behaviour of anchor tags using jquery

我试图覆盖锚标记的默认行为,以便我可以将我的服务器上的网页加载到现有的div中,而不是新的选项卡或窗口。

到目前为止我有:

myContainer.click(function(){                   
                    event.preventDefault();
                    $('a').click(function(){
                        var link = $(this).attr('href');
                        myContainer.load(link);
                    });
            });

在Chrome中,我必须在它执行任何操作之前单击链接两次,在IE中,它根本不起作用并使用新链接刷新页面。

任何帮助深表感谢。

不应该只是:

 $('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);
});

你忘了通过活动:

myContainer.click(function(event){
event.preventDefault();
 $('a').click(function(){ var link = $(this).attr('href');
 myContainer.load(link);
 });
 });

尝试重新排列它们:

myContainer.ready(function(){
    $('a').click(function(event){
    event.preventDefault();
    var link = $(this).attr('href');
     myContainer.load(link);
     });
     });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM