使用 jquery 逐个链接启用默认行为



我是一个html css设计类型,对jquery不太满意。我继承了一个禁用链接默认行为的网站,我可以看到的是以下代码:

$('a').click(function(event) {
    event.preventDefault();
    var locationHref = window.location.href;
    var elementClick = $(this).attr("href");
    var destination = $(elementClick).offset().top;
    $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 1000, function() {
        window.location.hash = elementClick
    });
      return false;

我需要添加指向此单页网站的普通链接,而不会弄乱此代码(它启用视差滚动)。有什么方法可以逐个链接完成此操作吗?

顺便说一句,我在这里看到了解决方案,但我必须承认不太理解它们。谢谢。

不知道为什么有人会以这种方式全面禁用页面上的所有链接。不幸的是,您继承了此类代码。我不确定你的意思是你不能碰那个代码,还是只是不想碰。

如果是前者,您有两种选择:

1) 为某些链接取消绑定此点击事件。例如,如果您在容器内有链接,#container,或者所有链接都有某个类,.class ,您可以这样做:

$('#container a').off('click');
$('a.class').off('click');

然后,这些链接将没有继承的单击事件处理程序。

唯一的问题是取消绑定到此类链接的所有单击事件处理程序的绑定。由于继承的事件没有命名空间,因此这是不可避免的。第二种选择是...

2) 设置第二个单击事件处理程序,通过将用户转发到链接的 HREF 来绕过继承处理程序的默认操作阻止:

$('a').on('click', function() { location.href = $(this).attr('href'); });

如何给这些特殊链接一个data-donthandle="true"属性。然后,在 jQuery 中检查此属性。如果该属性存在且为 false,则只需在事件处理程序的开头return true;即可。

这将节省您浏览和禁用通过javascript的onclick,如已经建议的那样。

$('a').click(function(event) {
    if($(this).attr('data-donthandle')) {
        return true;
    }
    else {
       event.preventDefault();
       //code here for handling clicks
       alert('Stopped.');
       return false;
    }
    });​

最新更新