2013-07-18 54 views
0

,這裏是我的html:製作verticle滑動菜單與jQuery

<ul id="dmenu"> 
    <li><a href="#">menu item one</a></li> 

    <li><a href="#">menu item two</a> 
      <ul class="displayNone"> 
       <li><a href="#">menu item one</a> 
      </ul> 
    </li> 
</ul> 

當在一個標籤中的一個用戶點擊,我希望我的代碼,請檢查是否有父李標籤任何UL標記。如果有,我當時想的preventDefault行動的一個標籤和的slideToggle子UI元素

我的jQuery大氣壓:

$('#dmenu > a').click(function(e) { 
    if (this.parent().has('ul')) { 
     e.preventDefault(); 
     $(this).children().slideToggle(); 
    } 
}); 
+0

那麼,有什麼問題呢? –

+0

它不工作 - 代碼什麼都不做,我不知道爲什麼 – user2590709

+1

這是包裝在document.ready? –

回答

1

你在的a

孩子做幻燈片切換

改變$(this).children().slideToggle();

$(this).parent().children('ul').slideToggle(); 

也是你的選擇#dmenu > a是錯誤的 - 你的頂級菜單不有一個ID,如果它確實沒有直接錨作爲UL的孩子 - 刪除>並添加ID dmenu您一流ul或容器元素

編輯

正如奧斯汀指出,因爲你已經嵌套的列表,你可能要限制你的點擊事件到頂層只有這樣你就可以使用#dmenu > li a

Example

+0

使用'#dmenu> li a'會更好。 –

+0

@AustinBrunkhorst爲什麼添加一個額外的選擇器,你正在放慢你的查詢 – Pete

+0

因爲有嵌套列表。使用該查詢將消除檢查父代是否是無序列表的需要。 –