Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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 更有效的方法做多个父母_Javascript_Jquery - Fatal编程技术网

Javascript 更有效的方法做多个父母

Javascript 更有效的方法做多个父母,javascript,jquery,Javascript,Jquery,有没有更有效的方法来执行以下操作 $(this).parent().parent().parent().parent().parent().addClass('finished'); 请注意,我需要父概念,因为我在页面上有多个类似的项目。如果您有任何方法使用CSS选择器获取元素,可以执行以下操作: $(this).parents('selector'); 如果可以通过CSS选择器获取元素,可以执行以下操作: $(this).parents('selector'); 如果目标是获得第n个父项

有没有更有效的方法来执行以下操作

$(this).parent().parent().parent().parent().parent().addClass('finished');

请注意,我需要父概念,因为我在页面上有多个类似的项目。

如果您有任何方法使用CSS选择器获取元素,可以执行以下操作:

$(this).parents('selector');

如果可以通过CSS选择器获取元素,可以执行以下操作:

$(this).parents('selector');
如果目标是获得第n个父项,则可以与混合,注意:eq0获得第一个项:

$(this).parents(':eq(4)').addClass('finished');
如果目标是获得第n个父项,则可以与混合,注意:eq0获得第一个项:

$(this).parents(':eq(4)').addClass('finished');

如果这是您经常使用的方法,并且添加适当的选择器不是一个选项,那么您也可以创建自己的方法来获得您想要的:

$.fn.parent_num = function(num) {
    var elem = [];
    this.each(function() {
        var el = this;
        while(num>0) {
            if (el.parentNode) el = el.parentNode;
            num--;
        }
        elem.push(el);
    });
    return $(elem || this);
};
要像这样使用:

$(this).parent_num(5).addClass('finished');

如果这是您经常使用的方法,并且添加适当的选择器不是一个选项,那么您也可以创建自己的方法来获得您想要的:

$.fn.parent_num = function(num) {
    var elem = [];
    this.each(function() {
        var el = this;
        while(num>0) {
            if (el.parentNode) el = el.parentNode;
            num--;
        }
        elem.push(el);
    });
    return $(elem || this);
};
要像这样使用:

$(this).parent_num(5).addClass('finished');

家长的AnycsSelector(AnycsSelector)还有,是否有更高效的东西取决于您为什么首先需要使用它……这是什么,您的DOM是什么样子的?不要担心效率,担心可维护性。写这篇文章简直是噩梦,更不用说维护了。。考虑设计这样的元素/结构,可以使用一个共同的因素来简化所说的任务……如果你想要两个字符和计算效率,丢弃jQuery并编写你自己的函数,比如:函数UpNoad,n{No.&N-{No.No.NoDE.PalthNoo结;}返回节点;}你可以只做$UP,4.addClass…parents'AnycsSelector'还有,是否有更高效的东西取决于您为什么首先需要使用它…这是什么,以及您的DOM是什么样子?不要担心效率,担心可维护性。写这篇文章简直是噩梦,更不用说维护了。。考虑设计这样的元素/结构,可以使用一个共同的因素来简化所说的任务……如果你想要两个字符和计算效率,丢弃jQuery并编写你自己的函数,比如:函数UpNoad,n{No.&N-{No.No.NoDE.PalthNoo结;}返回节点;}你可以只做$UP,4.addClass…这里它需要是父级而不是父级。jQuery API:.parents和.parent方法类似,只是后者只在DOM树上移动一个级别。如果选择器匹配多个祖先,则不会执行正确的操作,但这通常不太可能。在这里,它需要是父级而不是父级。jQuery API:.parents和.parent方法类似,只是后者只在DOM树上移动一个级别。如果选择器匹配多个祖先,则不会做正确的事情,但这通常不太可能。嗯,这比较短,但搜索所有父代时效率较低?嗯,这比较短,但搜索所有父代时效率较低?