2016-09-13 2 views
0

Я использую эту простую JQuery, чтобы предотвратить стыковку редирект: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

[Документация] (http://api.jquery.com) –

ответ

0

Чтобы выбрать первый из них, как:

$("#main-nav .menu-wrapper .menu li.has-sub").find("a").eq(0).click(function() { 
    return false; 
}); 
+0

Почему downvote? В соответствии с исходным кодом jQuery .first() является просто удобной оболочкой для .eq (0): first: function() {return this.eq (0); }, src: https://github.com/jquery/jquery/blob/bf48c21d225c31f0f9b5441d95f73615ca3dcfdb/src/core.js#L91 – Leo

1

Если вы хотите, чтобы выбрать все первый уровень <a> теги, вы можете использовать .children вместо .find

Если вы хотите, чтобы выбрать именно первый <a> вы можете использовать .find('a:first')

Кстати, я рекомендую вам не return false, который мог бы остановить других возможных прослушивателей событий и p rocesses тоже. использовать event.preventDefault(); вместо

$("#main-nav .menu-wrapper .menu li.has-sub").find("a:first").click(function(event) { 
    event.preventDefault(); 
}); 
0

Выберите первый как этот

$("#main-nav .menu-wrapper .menu li.has-sub").find("a").first().click(fucntion(){ 
    ... 
}) 
0

Попробуйте это:

$("#main-nav .menu-wrapper .menu li.has-sub a:first").click(function() { 

    return false; 

}); 
0

В вашем случае, у вас есть только один <a> на первом уровне детей. Таким образом, вы могли бы использовать children() вместо find(), как это:

$("#main-nav .menu-wrapper .menu li.has-sub").children("a").click(function() { 
    return false; 
}); 

The .children() метод отличается от .find() в этом .children() только путешествует один уровень вниз по DOM дерева время .find() может перемещаться по нескольким уровням, чтобы выбрать элементы-потомки (внуки и т. д.).

Смежные вопросы