我在HTML列表的樹的樹添加一個點擊事件列出的項目,如本:在列表
<ul class="myTree">
<li class="treeItem">Category 1
<ul>
<li class="treeItem">Subcategory 1 1</li>
<li class="treeItem">Subcategory 1 2
<ul>
<li class="plus"><input type="text" value="Add a product"/></li>
</ul>
</li>
</ul>
</li>
<li class="treeItem">Category 2
<ul>
<li class="treeItem">Subcategory 1 1</li>
<li class="treeItem">Subcategory 1 2
<ul>
<li class="plus"><input type="text" value="Add a product"/></li>
</ul>
</li>
</ul>
</li>
</ul>
因此,大家可以看到,這是一個有點闡述名單。
現在我需要的是那些會檢索相應名稱(類別1,子類別11等)的那些「treeItem」類元素上的單擊事件。
我想出了這一點:
$(".myTree").on("click", ".treeItem", function() {
var categoryName = $(this).text();
alert(categoryName);
});
我面對現在唯一的問題是,首先,categoryName
包含
Category 2
Subcategory 1 1
Subcategory 1 2
當我點擊「等級1」 <li>
(如類別1)。我可以通過在我的<li>
中添加一些catname
屬性來避開這個問題,但最重要的是,當我點擊「2級」<li>
(例如子類別11)時,它會首先在級別2上觸發點擊事件<li>
,然後在級別1上觸發新的點擊事件<li>
...
這很明顯,它爲什麼會這樣做,但我需要一種方法來讓它只在最高級別出現一次(當我點擊「子類別1 1 「,它不應該觸發」類別1「的事件)。
還值得注意的是,這棵樹會自動生成,這意味着我可以將我的treeItem
與其他類如「level1」或類似的東西貼在一起,但如果我能避免這種情況,我會喜歡它。
...好吧,因爲我覺得我有點迷失了自己在它這個問題可能需要總結......
- 我需要在列表樹click事件
- 我需要的單擊事件只能在最高級別(最深)被解僱。
- 添加一些類名是可能的,但希望避免。
謝謝!
不錯的答案Rory。 –
謝謝:)我真的不明白你的過濾器,但它的作品,所以我會說這樣很好:P。 Thx爲您提供幫助! –
沒問題。 'contents'返回包含文本節點的給定元素的所有元素。 'filter'是刪除前/後空格,然後它簡單地返回第一個元素,在你的情況下是包含'Category x'字符串的文本節點。它看起來比它更復雜;) –