如果不是'div',请在'li'中找到.closest

时间:2012-09-12 13:33:56

标签: javascript jquery

我正在使用最接近的方法在div中查找属性:

 .closest($('div[my-attribute]'));

该属性也可以存在于li元素中:

 .closest($('li[my-attribute]'));

如果在div中找不到属性,在'li'中查找属性的优雅方法是什么?

类似的东西:

var closest = myDiv.closest($('div[my-attribute]'));
if(closest == null){
    closest = myDiv.closest($('li[my-attribute]'));
}

5 个答案:

答案 0 :(得分:1)

这将返回包含属性“my-attribute”的最近父母,无论天气如何,元素都是div,li(或其他任何东西)。

var closest = myDiv.closest('[my-attribute]');

答案 1 :(得分:1)

.closest('div[my-attribute], li[my-attribute]');应该有用。

请注意.closest遍历dom树,因此它只会检查基本选择器的祖先。

I.E:如果你有这样的结构:div > ul > (li > a, li > a, li > a)

然后$("ul").closest("li")将一无所获。

答案 2 :(得分:0)

var closest = myDiv.closest($('div[my-attribute]')) || myDiv.closest($('li[my-attribute]'));

答案 3 :(得分:0)

您可以用逗号分隔jQuery中的多个选择器。

http://api.jquery.com/multiple-selector/

答案 4 :(得分:0)

您可以使用*选择任何元素。

$('*[my-attribute]')

演示:http://jsfiddle.net/eZbN7/