jQuery选择第一项

时间:2016-09-13 14:32:50

标签: javascript jquery html css

我正在使用这个简单的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)链接的重定向。我当前的脚本会阻止导航中所有链接的重定向!

5 个答案:

答案 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()可以遍历多个级别以选择后代元素(孙子等)同样。