Javascript 编写元素的更简洁方法。parent().parent().parent().parent().parent().parent()
如果我需要选择第10个家长,是否有更干净的方法,然后重复10次。家长Javascript 编写元素的更简洁方法。parent().parent().parent().parent().parent().parent(),javascript,jquery,Javascript,Jquery,如果我需要选择第10个家长,是否有更干净的方法,然后重复10次。家长 $('#element_id').parent().parent().parent().parent().parent().parent().parent().parent().parent().parent(); 如果有一个选择器代表您要寻找的目标,则使用或 …但这两个都将返回找到的第一个匹配项。正确的解决方案将取决于实际的HTML标记 请注意.closest也计算原始元素,而父元素以第一个祖先开始 还请记住,浏览器会对H
$('#element_id').parent().parent().parent().parent().parent().parent().parent().parent().parent().parent();
如果有一个选择器代表您要寻找的目标,则使用或 …但这两个都将返回找到的第一个匹配项。正确的解决方案将取决于实际的HTML标记 请注意.closest也计算原始元素,而父元素以第一个祖先开始 还请记住,浏览器会对HTML进行更正。因此,如果从没有的内部遍历到的外部元素,则在不同的浏览器中执行x个.parent可能会得到不同的结果。以下文章使用此实现:
jQuery.fn.getParent = function(num) {
var last = this[0];
for (var i = 0; i < num; i++) {
if(!last) break;
last = last.parentNode;
}
return jQuery(last);
};
// usage:
$('#myElement').getParent(3);
我使用了以下代码:
var position = $("#test").parents("div").length - 10;
$("#test").closest("div:eq(" + position + ")").append("here!!!");
使用该HTML:
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<span id="test">here</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
是的,这是11个div。所以运行代码应该在第10个div处停止,并附加在这里
我相信这段代码会更干净
不需要添加类
编辑:
我使用了11 DIV,所以你可以看到它不是第一个,它实际上在第10个停止。如果你真的需要第10个父项,并且你无法使用选择器到达那里,最平滑的方法可能是这样的:
$('#element_id').parents().eq(9);
这是做这件事的方法。父级十次需要太多关于DOM结构的知识,这可能会改变。将类应用到您要查找的节点会更安全。谢谢,这确实很好,但不能回答问题。如果这第十个家长没有类或id怎么办?@Silver Light:您仍然会使用带有选择器的.parents。给它一个选择器,上面写着给我第十场比赛。例如:$'element_id'。parents':eq9'…主要的一点是这种方法是脆弱的,您应该首先尝试定义标记,以便可以直接针对元素。如果你要升10级,我想你一定有明确的目标。虽然我知道有些情况下这是不可能的。如果元素的祖先数少于num,这将导致错误。如果在上一次迭代中没有parentNode,则应该中断循环。如果最后的休息;last=last.parentNode;正如@lonesomeday所指出的那样above@lonesomeday,说得好。我只是觉得这可能对OP或其他人有用。$'element_id'。伟大的祖父祖母?@Larry:很好。jQuery是如何在其API中忽略这一点的;o
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<span id="test">here</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
$('#element_id').parents().eq(9);