gpt4 book ai didi

javascript - 阻止导航并获取目标链接

转载 作者:行者123 更新时间:2023-11-29 16:05:58 24 4
gpt4 key购买 nike

我想通过 Ajax 更改内容代码而不是导航和重新加载页面,从而使我的网站更快。但我也关心非 Javascript 用户,所以我想使用普通链接而不是 onclick 事件。而且我想阻止导航和获取目标 href 链接来更改内容。

有没有办法用 Javascript/jQuery 来实现?显然 jQuery 支持 event.preventDefault(); 但我不认为它能让你从那个事件中获取目标链接......

最佳答案

这可以在 JavaScript 中完成(无需使用 jQuery)

要捕获文档中的所有点击,您可以使用

document.body.addEventListener('click', function(e) {
e.preventDefault()
const href = e.target.href
})

您还应该添加额外的检查,确保点击的元素与 href 的链接完全一致:

e.target.tagName.toLowerCase() === 'a'

工作代码示例:

document.body.addEventListener('click', function(e) {
if (e.target.tagName.toLowerCase() === 'a') {
e.preventDefault()
const href = e.target.href
}
})

使用此功能,您将能够捕获所有点击,检查用户是否点击了 a 并仅使用纯 javascript 获取 href 属性。 http://youmightnotneedjquery.com

更新基于 @AVAVT 评论,如果你需要处理嵌套在 a 中的东西,比如

<a href="https://google.com"> 
<img src="https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png?v=9c558ec15d8a">
</a>

只需使用 e.target.closest('a')

document.body.addEventListener('click', function(e) {
if (e.target.closest('a')) {
e.preventDefault()
const href = e.target.closest('a').href
}
})

因为 target 属性将导致被精确点击的项目(在本例中为 img)我们需要检查它是否是 a 的子项并且然后防止默认行为。

注意:

jQuery solution is simple, so it's preferred, if you already have jQuery on the page.

否则你可以不用它而使用普通的 javascript。

关于javascript - 阻止导航并获取目标链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42188702/

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