2016-09-13 168 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

[Documentation](http://api.jquery.com) –

回答

0

要選擇第一個是這樣的:

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

爲什麼downvote? (0): 根據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也有漫步。使用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; 
}); 

的。孩子()方法.find()在。孩子(不同)僅行進的單級下調DOM樹,而.find()可以遍歷多個層次來選擇後代元素(孫輩等)。

相關問題