2014-04-09 32 views
7

我有这样一个层次结构:jQuery的.parent()选择多个级别最高

<search> 
    <inner> 
     <input/> 
     <p/> 
     <img/> 
    </inner> 
</search> 

我所试图做的是选择<input/>的onfocus父<search>,但如果我这样做:

$(function(){ 
    $("input").focus(function(){ 
     console.log($(this).parent("search")); 
    }); 
}); 

控制台显示一个空数组。有没有一种干净的方法可以选择一个以上的父级?我知道要做到这一点的唯一方法是.parent().parent("search"),这可行,但不是很干净,如果我试图选择一个父级5层,那将是非常残酷的。

+1

http://api.jquery.com/closest/ –

回答

19

尝试.closest()

对于组中的每一个元素,获取通过测试元件本身和DOM树向上遍历通过其 祖先 选择相匹配的第一个元素。

$(this).closest("search") 
+0

这很好用!谢谢!我知道必须有某种方式。 – David

+0

感谢日志@Oriol –

3

the docs

的。家长()和.parent()方法是相似的,不同之处在于后者只行进的单一电平向上的DOM树。

尝试用$.parents代替。

+0

这也奏效!非常感谢! – David