有沒有辦法讓parentsUntil()停在第一個帶有ID的元素之後?例如,當我點擊li時,我想要返回li ul div#id-found
。jQuery parentsUntil()id被發現
<div id="id-found">
<ul>
<li></li>
</ul>
</div>
下面是一個例子爵士小提琴(這是更高級一些比這個例子):http://jsfiddle.net/T9gBu/
有沒有辦法讓parentsUntil()停在第一個帶有ID的元素之後?例如,當我點擊li時,我想要返回li ul div#id-found
。jQuery parentsUntil()id被發現
<div id="id-found">
<ul>
<li></li>
</ul>
</div>
下面是一個例子爵士小提琴(這是更高級一些比這個例子):http://jsfiddle.net/T9gBu/
這是爲了實現你想要的最好的方式:
var $t = $(this), $p = $t.parentsUntil('[id]')
$p = $t.add($t.closest('*[id]').add($p));
現在$p
有元素的向上線索可以映射並加入等
下面是修改的小提琴 http://jsfiddle.net/Exceeder/awnvowan/
你的小提琴也存在一些問題。如果我理解正確的話,你需要什麼,這是最有效的直接映射器中處理字符串的建築:
var selector =
$p.map(function() {
var $t = $(this),
id = $t.attr('id'),
tag = $t.prop("tagName"),
cls = $t.attr("class");
if (cls) {
cls = "." + $.trim(cls).replace(/\s/gi, ".");
} else
cls = '';
return tag + (id ? '#'+id : '') + cls;
}).get().reverse().join(" ");
更新基於jfaron評論這個答案已經更新。
不能與在同一頁上相同的ID兩個元素。這是HTML的基本規則。一旦元素的祖先擁有唯一的ID,您就可以使用.closest()來選擇所需的ID。
This Works!我唯一需要的是將id包含在div中(因爲這個方法只返回標籤而不是它的id),所以我現在正在試驗這個。如果你知道如何做到這一點,這將是非常有幫助的。 :) –
有一個錯誤,你需要使用'最接近'來包含父母的ID。我更新了我的答案以反映它並稍微改進了代碼。 –
看起來它不包括被點擊的元素,但你已經足夠接近我瞭解它。謝啦! –