Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写元素的更简洁方法。parent().parent().parent().parent().parent().parent()_Javascript_Jquery - Fatal编程技术网

Javascript 编写元素的更简洁方法。parent().parent().parent().parent().parent().parent()

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

如果我需要选择第10个家长,是否有更干净的方法,然后重复10次。家长

$('#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);