如何选择具有特定属性的可见元素

Alo*_*nso 1 html jquery jquery-selectors html-lists

假设有一个 div 包含一些 'li' 元素。当我单击复选框时,某些元素(li)被选中。我想从 div 中可见的 li 中选择具有某些特定属性的所有 li。例如下面,假设只有前三个 li 是可见的,我想选择具有 value=ItemA 和 color=Red 的 li。

>

 <div id="products">
<li value="ItemA" color="Yellow"><img src="images/1.jpg"></li>
<li value="ItemA" color="Red"><img src="images/2.jpg"></li>
<li value="ItemB" color="Red"><img src="images/3.jpg"></li>
<li value="BRAND C" color="Red"><img src="images/7.jpg"></li>
<li value="BRAND D" color="Blue"><img src="images/8.jpg"></li>
<li value="BRAND A" color="Yellow"><img src="images/9.jpg"></li>
<li value="BRAND B" color="Yellow"><img src="images/10.jpg"></li>
</div>
Run Code Online (Sandbox Code Playgroud)

我知道这些查询。

$("#products").find("li:visible")      //query to find visible li

$('li[value="ItemA"][color="Red"]).hide()   // query with attribute selectors
Run Code Online (Sandbox Code Playgroud)

选择这样的 li 的 jquery 语句是什么?

und*_*ned 5

value并且colorli元素的无效属性,您可以使用data-*属性代替:

<li data-value="itema" data-color="red"><img src="images/1.jpg"></li>
Run Code Online (Sandbox Code Playgroud)

然后您可以使用:visible选择器来选择可见元素。

$('#products li[data-value="itema"][data-color="red"]:visible');
Run Code Online (Sandbox Code Playgroud)

这是一个又长又慢的选择器,但会选择您想要的元素。