我正在使用这个简单的jQuery来阻止链接重定向:
$("#main-nav .menu-wrapper .menu li.has-sub").find( "a" ).click(function() {
return false;
});
这是我的HTML:
<div id="main-nav">
<div class="menu-wrapper">
<ul class="menu">
<!-- ONLY SELECT THIS LINK -->
<li><a href="#">Lorem Ipsum</a></li>
<li class="has-sub"><a href="#">Dolor Sit</a>
<ul class="sub">
<!-- DO NOT SELECT THIS LINK -->
<li><a href="#">Lorem Ipsum</a></li>
</ul>
</li>
</ul>
</div>
</div>
我只想阻止第一个链接的重定向而不是第二个(.sub
)链接的重定向。我当前的脚本会阻止导航中所有链接的重定向!
答案 0 :(得分:1)
如果您要选择所有第一级<a>
代码,可以使用.children
代替.find
如果您想准确选择第一个<a>
标记,可以使用.find('a:first')
顺便说一句,我建议你不要return false
,它也可以阻止其他可能的事件监听器和进程。使用event.preventDefault();
代替
$("#main-nav .menu-wrapper .menu li.has-sub").find( "a:first" ).click(function(event) {
event.preventDefault();
});
答案 1 :(得分:0)
选择第一个就像:
$("#main-nav .menu-wrapper .menu li.has-sub").find( "a" ).eq(0).click(function() {
return false;
});
答案 2 :(得分:0)
首先选择这样的
$("#main-nav .menu-wrapper .menu li.has-sub").find( "a" ).first().click(fucntion(){
...
})
答案 3 :(得分:0)
试试这个:
$("#main-nav .menu-wrapper .menu li.has-sub a:first").click(function() {
return false;
});
答案 4 :(得分:0)
在您的情况下,您在第一级别的孩子中只有一个<a>
。因此,您可以使用children()
代替find()
,如下所示:
$("#main-nav .menu-wrapper .menu li.has-sub").children("a").click(function() {
return false;
});
.children()方法与.find()的不同之处在于.children()只沿DOM树向下移动一个级别,而.find()可以遍历多个级别以选择后代元素(孙子等)同样。