2016-05-11 35 views
0

我有以下設計ul list如何獲取jQuery中列表項最頂端父項的文本?

​​

現在我想要的是,如果你點擊「CSS」項目,我想要得到它的父母的文本,即「設計」。 我已經嘗試了下面的代碼,但我得到了它的整個列表。

$('ul').on("click", "li", function (e) { 
    console.log("Child Clicked: "+$(this).text()+" Parent: "+$(this).parents(".category").text()); 
}); 

回答

3

嘗試

$(this).parents(".category")[0].childNodes[0].textContent; 

的childNodes更換這部分

$(this).parents(".category").text() 

返回所有的子元素,包括文本節點。

如果你想使用jQuery只,然後包跨度

<ul> 
    <li class="category"> 
     <span>Design</span> 
     <ul> 
      <li>Graphic Design</li> 
      <li>Web Design </li> 
      <li>HTML</li> 
      <li>CSS</li> 
      <li>Print</li> 
     </ul> 
    </li> 
    <li class="category"> 
     <span>Development</span> 
     <ul> 
      <li>PHP</li> 
      <li>Java</li> 
     </ul> 
    </li> 
</ul> 

這裏面textnode和使用

$(this).parents(".category span").html() 

獲取該第一個節點的文本另一種方法可以是使用contentsfilter jquery

$(this).parents(".category").contents().filter(function() { 
    return this.nodeType == 3; 
}).nodeValue; 
+0

它的工作謝謝你,但我一定要使用jQuery的,反正是有,我們可以用jQuery完成它? –

+0

@BilalHussain不知道jQuery是否提供了足夠的工作與jQuery。事實上,你應該改變你的標記以在span或其他元素中包含該文本 – gurvinder372

+0

'.filter()'可以被使用。 – Jai

0

只是改變:

console.log("Child Clicked: "+$(this).text()+" Parent: "+$(this).parents(".category").text()); 

有:

console.log("Child Clicked: "+$(this).text()+" Parent: "+$(this).parent().text()); 
+0

它返回當前點擊項目的整個列表。 –

+0

然後您可以選擇第一個,例如:** $(this).parent()[0] ** –

+0

實際上,我想要的父項不在列表中,它只是給出了兄弟項目列表。 –