jQuery:select祖父母
有没有更好的方法来selectjQuery中的祖父母元素,以避免这种情况?
$(this).parent().parent().parent().parent().parent().children(".title, .meta").fadeIn("fast");
谢谢。
除了parents()
,正如他们所说,你也应该检查出closest()
。 阅读文档中的比较,但是它的主要区别在于它只search一个结果,它包含$(this)
它所search的内容(如果你不够详细,可能会得到你正在search的东西) 。 优点和缺点。
我写了这个简单的插件,因为我认为我有一个明确的类select给我的错误。 对于这种特殊情况,select祖父母似乎比$().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 );
使用parents()
select器来获取元素的所有父项。 然后,您可以search集合,或者如果要影响所有祖先,可以对其进行迭代。
@Femi有一个答案来做这件事,并提到recursion,但他的解决scheme是不recursion的,这里是一个recursion的jQuery解决scheme获取项目的祖先:
$.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 ) );
得到元子的祖父母。 这是JSFiddle