jQuery: selecting grandparents
You can use the parents()
method which matches parents against a selector
http://api.jquery.com/parents/
Or if you're using 1.4 there is a new parentsUntil()
method
In addition to parents()
, as they've said, you should also check out closest()
. Read the comparison in the documentation there, but its main differences are that it searches for only one result, and it includes $(this)
in what it searches (could get the thing you're searching from if you're not specific enough). Pros and cons.
I wrote this simple plugin because I thought I had an unambiguous class selection somewhere giving me errors. Selecting grandparent seemed more direct than $().parents()
for this particular case.
Well, I used this once then realized I actually had a spelling error. Not sure how helpful it really is. $('myelem').gparent(2);
gets you the grandparent of '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 );