gpt4 book ai didi

jquery - 拦截所有当前和 future 的链接

转载 作者:行者123 更新时间:2023-12-01 00:35:27 27 4
gpt4 key购买 nike

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

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

最佳答案

[编辑:我偶尔会对此答案进行投票,因此我想用更当前的(截至 2015 年 5 月)实践来更新它]:

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

$('#parent').on('click', 'a', function(event) {
event.preventDefault();
// do the rest of your stuff
}

我原来的答案的其余部分仍然适用。

<小时/>

如果您不想要默认的点击行为,您还需要停止事件冒泡。与现场相比,我更喜欢委托(delegate),所以这是我的建议:

$('#parent').delegate('a', 'click', function(event) {
event.preventDefault();
// do the rest of your stuff
});

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

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

$('#parent').on('click', 'a', function(event) {
event.preventDefault();
// do the rest of your stuff
});

关于jquery - 拦截所有当前和 future 的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7599300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com