2012-03-23 21 views
0

不知道我錯過了什麼。這裏是我的HTML:找不到UL的子元素

<ul class="top-level"> 
     <li class="agency"><a href="contentAgency.php?id=6" class="test">Client</a> 
     <ul class="agency-sub"> 
      <li><a href="">Targeting this</a></li> 
      <li><a href=""><Multiple entries</a></li> 
     </ul> 
     </li> 
    </ul> 

這裏是我的功能:

$("ul.top-level").on("click", "ul.top-level li.agency a.test", function (event) { 
    var numbs = $(this).attr("href").match(/id=([0-9]+)/)[1]; 
    $("#content-display article").hide(); 
    $(this).children().find("a").addClass("sub-active"); 
    $(this).parent().siblings().find("ul").hide(); 
    showContentAgency(numbs, this); 
    event.preventDefault(); 
}); 

我試圖點擊時類sub-active添加到嵌套ul li a標籤。

回答

1

而不是$(this).children()使用$(this).next()因爲ul您正在尋找的元素是a.test正在被點擊的元素的兄弟。

試試這個。

$("ul.top-level").on("click", "li.agency a.test", function (event) { 
    var numbs = $(this).attr("href").match(/id=([0-9]+)/)[1]; 
    $("#content-display article").hide(); 
    $(this).next().find("a").addClass("sub-active"); 
    $(this).parent().siblings().find("ul").hide(); 
    showContentAgency(numbs, this); 
    event.preventDefault(); 
}); 
+0

謝謝,有些東西還沒有關閉。我創建了一個小提琴並添加了'showContentAgency(numbs,this);'函數:http://jsfiddle.net/pKLpa/ – Yahreen 2012-03-23 20:16:04

+0

您的選擇器(on()的第二個參數是錯誤的)http:// jsfiddle達網絡/ pKLpa/1 /。我也編輯了我的答案。 – ShankarSangoli 2012-03-23 20:19:17

+0

好吧,現在它將'sub-active'應用於我列表中的所有嵌套hrefs。我怎樣才能瞄準壁櫥呢? – Yahreen 2012-03-23 20:26:02

0

thisa.test元素..

所以你可能需要改變

$(this).children().find("a").addClass("sub-active"); 

$(this).addClass("sub-active"); 

引述documentation of .on()

當提供選擇,事件處理程序被稱爲委託。 當事件直接發生在綁定元素上時,不會調用該處理程序,但僅對匹配選擇器的後代(內部元素)纔會調用該處理程序。 jQuery將事件從事件目標引發到處理程序所附的元素(即,最內層到最外層的元素),並沿着匹配選擇器的路徑上的任何元素運行處理程序。

+0

但我試圖選擇''這個'' – Yahreen 2012-03-23 20:19:27

+0

嵌套ul中的href,但'ul'沒有嵌套在'a'裏面。 – 2012-03-23 22:18:01

0

$("ul.top-level").on("click", "ul.top-level li.agency a.test"將選擇包含文本「客戶端」的鏈接,該鏈接將變爲$(this)

$(this).children()沒有上下文,因爲鏈接沒有孩子。你可能想要:$(this).parent().next().children()

$(this).parent().siblings().find("ul").hide();將選擇「代理」的兄弟姐妹,沒有,爲find('ul')。孩子也不會工作。

+0

嗨,我添加了'showContentAgency(麻木,這個);'到這個小提琴:http://jsfiddle.net/pKLpa/,東西仍然關閉。 – Yahreen 2012-03-23 20:18:36