2014-01-21 65 views
0

我試圖建立一個導航。我想知道< li>是否有< ul>。 如果< li>有< ul>,那麼< ul>應該淡入,否則應該打開鏈接。我已經在網上尋找..無法找到我的問題的完美解決方案。jquery:如何找到嵌套的ul與if語句

這裏是我的標記:

<nav id="mobile-nav"> 
     <ul> 
      <li><a href="#" title="Nav">Link</a> 
       <ul class="second"> 
        <li><a href="#" title="Sub Nav">Link 2</a> 
         <ul> 
          <li><a href="#" title="Sub Nav 2">Link 3</a></li> 
          <li><a href="#" title="Sub Nav 2">Link 3</a></li> 
         </ul> 
        </li> 
        <li><a href="#" title="Sub Nav">Link 2</a></li> 
        <li><a href="#" title="Sub Nav">Link 2</a></li> 
       </ul> 
      </li> 
      <li><a href="#" title="Nav">Link</a></li> 
      <li><a href="#" title="Nav">Link</a></li> 
      <li><a href="#" title="Nav">Link</a></li> 
     </ul> 
    </nav> 

的jQuery:

$('#mobile-nav').on('click', 'a', function(){ 

if($(this).parent().has('ul')){ 
    alert("has ul"); 
    return false; 
} else { 
    alert("no ul"); 
    return false; 
} 

});

我測試了它,它總是給我「有UL」。

我也試過這樣:

if($(this).closest('li').has('ul')){ 
alert("has ul"); 
return false; 
} else { 
alert("no ul"); 
return false; 
} 

感謝您的幫助

+0

其中需要的鏈接打開 –

+0

嘗試http://jsfiddle.net/arunpjohny/cwmT7/或http://jsfiddle.net/arunpjohny/cwmT7/2/ –

回答

2

如果你想測試一個布爾值,那麼你需要使用length

if($(this).parent().has('ul').length){ 
} 
+0

好東西,謝謝! – marc4ndrew

3

應該是:

$(this).parent().find('ul').length 

Working Fiddle

+0

謝謝!它現在有效! – marc4ndrew

+0

@ marc4ndrew:很高興它幫助你...快樂編碼O_o –