jQuery:选择祖父母

93ze6v8z  于 2023-04-11  发布在  jQuery
关注(0)|答案(7)|浏览(168)

有没有更好的方法来选择jQuery中的祖元素以避免这种情况?

$(this).parent().parent().parent().parent().parent().children(".title, .meta").fadeIn("fast");

谢谢。

jqjz2hbq

jqjz2hbq1#

您可以使用parents()方法,该方法将父对象与选择器进行匹配
http://api.jquery.com/parents/
或者,如果您使用的是1.4,则有一个新的parentsUntil()方法
http://api.jquery.com/parentsUntil/

83qze16e

83qze16e2#

除了parents()之外,正如他们所说的,你还应该check out closest()。阅读文档中的比较,但它的主要区别是它只搜索一个结果,并且它在搜索内容中包含$(this)(如果你不够具体,可能会得到你正在搜索的东西)。

4szc88ey

4szc88ey3#

我写了这个简单的插件,因为我认为我有一个明确的类选择给我错误的地方。选择祖父母似乎比$().parents()更直接的特殊情况。
嗯,我用过一次,然后意识到我实际上有一个拼写错误。不知道它到底有多大帮助。$('myelem').gparent(2);让你成为'myelem'的祖父母。

(function( $ ){
$.fn.gparent = function( recursion ){
    if( recursion == undefined ) recursion = 2;
    if(typeof(recursion) == "number"){
        recursion = parseInt( recursion );
        if( recursion > 0 ){
            gparent_holder = $(this);
            for(var gparent_i = 0; gparent_i < recursion; gparent_i++){
                gparent_holder = gparent_holder.parent();
            }
            return gparent_holder;
        }
        else return false;
    }
    else return false;
}
})( jQuery );
pb3s4cty

pb3s4cty4#

使用parents()选择器获取元素的所有父元素。然后,您可以搜索集合,或者如果您想影响所有祖先,则可以迭代它。

k3fezbri

k3fezbri5#

@Femi对此有一个答案,并提到了递归,但他的解决方案不是递归的,下面是一个递归的jQuery解决方案,用于获取一个项目的祖先:

$.fn.gparent = function( recursion ){
   console.log( 'recursion: ' + recursion );
   if( recursion > 1 ) return $(this).parent().gparent( recursion - 1 );
   return $(this).parent();
};

如果这是你的HTML:

<div id='grandparent'>
  <div id='parent'>
    <div id='child'>
      child
    </div>
  </div>
</div>

你可以打电话

console.log( $('#child').gparent( 2 ) );

获取元素child. Here's the JSFiddle的祖父

nr9pn0ug

nr9pn0ug6#

使用parents()children()得到相同的结果。
示例而不是使用此:

$(this).parent().parent().parent().children(".title").fadeIn("fast");

你可以使用这个:

$(this).parents().children(".title").fadeIn("fast");
xoefb8l8

xoefb8l87#

基本示例

<div id="europe">
   <div>
       <span id="denmark">Minimum Stok</span> 
   </div>
</div>

$('span#denmark').parents("div#europe").attr('class', 'place')

结果;

<div id="europe" class="place">
   <div>
       <span id="denmark">Minimum Stok</span> 
   </div>
</div>

相关问题