首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >截取当前和将来的所有链接

截取当前和将来的所有链接
EN

Stack Overflow用户
提问于 2011-09-29 23:00:45
回答 5查看 4.4K关注 0票数 3

我只是想知道jquery是否有一种方法可以在点击时拦截链接。问题是我的页面上的一些链接在第一次加载页面时没有加载。我有一个模糊的记忆,听说jquery有一种方法可以拦截所有当前和未来的链接。这是我的代码。它适用于开始时存在的所有链接,但后来加载到页面上的链接不会被此函数截获

代码语言:javascript
复制
$('a').trackClick({
        areaClick: function(element) { return getAreaClicked(element); },
        href: function(element) { return getHrefFromElement(element); },
        text: function(element) { return getTextFromElement(element); },
        exceptions: function(element) { return isException(element); }
    });
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-29 23:04:10

你需要jquery Live查看这里:http://api.jquery.com/live/

代码语言:javascript
复制
    $('a').live('click', function(e){

var element  = $(this);
var data = {areaClick: function(element) { return getAreaClicked(element); },
            href: function(element) { return getHrefFromElement(element); },
            text: function(element) { return getTextFromElement(element); },
            exceptions: function(element) { return isException(element); }
}
    trackClick(data);

    });
票数 5
EN

Stack Overflow用户

发布于 2011-09-29 23:06:06

编辑:我偶尔会对这个答案投赞成票,所以我想用更新的(截至2015年5月)实践来更新它

根据我最初的回答,委派监听器是一种更好的做法。当前jQuery的“最佳实践”语法是.on()。它只是在顺序上有所不同,对我来说更直观的是:

代码语言:javascript
复制
$('#parent').on('click', 'a', function(event) {
  event.preventDefault();
  // do the rest of your stuff
}

我最初回答的其余部分仍然适用。

如果你不想要默认的点击行为,你也需要停止事件冒泡。我更喜欢委托而不是实况,所以这是我的建议:

代码语言:javascript
复制
$('#parent').delegate('a', 'click', function(event) {
  event.preventDefault();
  // do the rest of your stuff
});

"#parent“只是一个示例。您可以使用任何适当的选择器,这些选择器将成为您的锚标签的永久祖先。甚至可以高达"body",但通常也可以使用某种描述的包装器ID。

[编辑:我最近看到了一张赞成票,这意味着这个答案正在被外面的人看到。需要注意的是,.live()现在已被弃用,虽然支持.delegate(),但官方建议的语法是.on()用作委托者:

代码语言:javascript
复制
$('#parent').on('click', 'a', function(event) {
  event.preventDefault();
  // do the rest of your stuff
});
票数 7
EN

Stack Overflow用户

发布于 2011-09-29 23:03:16

使用jQuery的live事件处理程序:

代码语言:javascript
复制
$('a').live('click', function() {
    ...
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7599300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档