我有一个div,有一个类说包装器。 html的结构看起来像这样。
<div class="wrapper">
<div class="header">
<a href="http://mysite.com">LOGO</a>
</div>
<div class="nav">
<!-- Anchors -->
</div>
<div class="container">
<!-- Other contents anchors etc. -->
</div>
</div>
我们有什么方法可以禁用包装内的所有链接,除了div中有“nav”类的锚点?什么是有效的方法呢?
我使用以下代码禁用所有链接 -
$('.wrapper').find('a').die('click');
$('.wrapper').find('a').unbind('click');
$('.wrapper').find('a').removeAttr('onclick');
$('.wrapper').find('a[href^="javascript"]').removeAttr('href');
我们可以不使用循环检查吗?或者,它会影响相同,使用循环和不使用循环?
答案 0 :(得分:2)
基于HarryFink的回答使用类似的东西
(closest
函数比parents
)
$('.wrapper').on('click', 'a', function(e){
if(!$(this).closest('.nav')){
e.preventDefault();
}
})
答案 1 :(得分:1)
尝试这样的事情:
$('.wrapper').on('click', function(e){
var $target = $(e.target);
if(!$target.parents('.nav')){
e.preventDefault();
}
})
答案 2 :(得分:1)
您可以使用以下内容定位所有anchors
的{{1}}的后代,这些wrapper
的后代包含在另一个div
中,而nav
没有类$('.wrapper div:not(".nav") a')
:< / p>
{{1}}
答案 3 :(得分:1)
尝试
$('.wrapper').find('a').not($('.wrapper').find('.nav a')).on('click', function(e){
e.preventDefault();
})
答案 4 :(得分:1)
答案 5 :(得分:1)
答案 6 :(得分:1)