jQuery function similar to closest that will return elements outside of the parent chain
javascript, jquery
Solution
If, by closest, you mean "travel up as little as possible, then anywhere downwards", then you can do
$("#source")
.closest(":has(.target)")
.find(".target:first") //make sure we only select one element in case of a tie
In your case, it would be better to specify the common parent directly:
$(this)
.closest(".row")
.find(".target") //there's no tie here, no need to arbitrate
Problem
Is there any jQuery function similar to closest() that will return elements outside of the parent chain, traversing sideways? For example, I want to call a function foo() on the div source that would return the div target. I know I could navigate using parent() and siblings(), but I need something generic that would go as many levels as needed, up, sideways and down? ``` var allsources = $('.source'); allsources.click(function()){ $(this).closest('.target').hide(); }); <div class="row"> <div> <div class="target" ></div> </div> <div> <div> <div class="source"></div> </div> </div> </div> <div class="row"> <div> <div class="target" ></div> </div> <div> <div> <div class="source"></div> </div> </div> </div> ``` EDIT: My definition of closest: you have an element source. Try to find it down. If find more than one, return one that is less node hoops down/next/prev. If not found, go one level up, and try to find again. Repeat until no parent.