0

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

mockJS 中的示例:

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

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

谢谢,史蒂夫

4

1 回答 1

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...
});

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

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

于 2012-07-30T16:00:37.100 回答