2016-05-11 14 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をラップし、別のアプローチは、のcontentsfilterを使用することができ

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

を使用して、その最初のノードのテキストを取得jquery

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

それはあなたに感謝働いたが、私はjqueryのを使用するためにバインドされています、とにかく我々はjQueryを使ってそれを達成することができますがありますか? –

+0

@BilalHussain jqueryがjqueryで十分動作するかどうかは不明です。実際には、マークアップを変更してスパンや他の要素の中にそのテキストを含めるべきです – 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

実際に私が望む親アイテムがリストにない場合、それは私に兄弟アイテムリストを与えます。 –

関連する問題