是否可以检测JavaScript是否已禁用链接?

时间:2012-07-30 15:56:48

标签: javascript jquery jquery-selectors

我熟悉将.preventDefault()(并返回false)添加到链接以阻止链接跟进,但是有没有人知道检查链接是否已设置为preventDefault的方法(和/或返回假)?

mockJS中的示例:

$('a').not().preventDefault().click(function() {
  //report that the link has been clicked
}

注意:我不知道是否可以添加/可以添加哪些脚本来阻止链接遵循其默认行为。

谢谢, 史蒂夫

1 个答案:

答案 0 :(得分:1)

一个选项是将另一个类应用于您拥有的每种类型的“链接”(轮播,标签,href等),然后将您的点击处理程序更改为$('linkClass').click(function() {.....});

编辑:我的观点并不是你应该只使用一个额外的课程,但也许在这里使用类作为标记作为链接,因为跟踪它们的方式对你来说是最好的。如果没有看到你的整个代码,我真的无法根据你的需要量身定制,所以我保留了它非常通用。

编辑2:我只想更好地澄清这个想法。

你要做的是为你的链接设置一个选择器(这个选择器可能需要观察一些不同的ID,类等,以便这样做)。向该选择器添加一个单击事件处理程序,然后每次单击其中一个链接时,您将以类的形式添加轨道标记,以便于您的跟踪代码。

示例:

var $links = $(...[selector stuff]...);
$links.click(function() {
    var $this = $(this);
    $this.addClass("clicked");
    ...do clicked stuff...
    $this.addClass("isActive");
    ...do active stuff...
    $this.removeClass("isActive").addClass("visited");
    ...do visited stuff...
});

通过使用此技术,您还可以稍后检查并查看已单击的链接,以防部分或全部跟踪方法在Click事件处理程序之外运行。

关于这种技术的另一个好处是在添加和删除类方面的开销很小。许多人对于开销很少感到惊讶,因为他们在想到课程时会本能地想到风格。但是,类是元素最有用的属性之一,只要您不添加或删除样式,您的开销就非常小(使用标志类也是.NET开发中非常常见的做法)。