有没有办法让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。我更新了我的答案以反映它并稍微改进了代码。 –
看起来它不包括被点击的元素,但你已经足够接近我了解它。谢啦! –