Javascript 查找最接近于';李';如果不在';分区';

Javascript 查找最接近于';李';如果不在';分区';,javascript,jquery,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($

我正在使用最接近的方法查找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]'));
}

可以在jQuery中用逗号分隔多个选择器


这将返回包含属性“my attribute”的最近的父元素,而不管该元素是div、li(或任何其他元素)


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

$('*[my-attribute]')
演示:

.closest('div[my attribute],li[my attribute])应该可以工作

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

例如:如果你有这样一个结构:
div>ul>(li>a,li>a,li>a)


然后,
$(“ul”)。最近的(“li”)
将什么也找不到

看一看,它会帮你做你想做的事情。不是吗?
。最近('div[my attribute]')
(没有周围的
$()
)?@sp00m两种方法都有效,即使我也会使用字符串搜索(),它不是三元运算符。哦,是的,我的坏哈哈。我最初编写了一个三元运算符,认为可以使用与php类似的语法,
($something):$default
,但后来意识到这是不必要的,虽然这可能有效,但如果他只想要
li
div
元素,这将给他带来误报(如果其他元素可以具有该属性)
var closest = myDiv.closest('[my-attribute]');
$('*[my-attribute]')