我在列表中有几个DIV标签:
<div status="1" searchText="some text">...</div>
<div status="2" searchText="more text">...</div>
<div status="1" searchText="even">...</div>
我根据状态显示/隐藏了一些按钮。 js看起来像这样:
if($(button).attr("active")=="true") {
$(button).attr("active","false"); // turn off button
$('[status="'+status+'"]').hide(200); // hide divs with status
} else {
$(button).attr("active","true"); // turn on button
$('[status="'+status+'"]').show(200); // show dive with status
}
我有一个新的要求按searchText过滤。很简单,使用keyUp()设置文本表单框,js看起来像这样:
var val = elem.value;
$("div[searchText*='"+val+"']").show();
$("div[searchText]:not('div[searchText*=\'"+val+"\']')").hide();
问题在于每一个都覆盖另一个。如果我点击状态1按钮,它将显示()无论搜索文本是什么,反之亦然。
如何对两个不同的属性进行AND?我需要这样的东西:
$("div[searchText*='"+val+"']") AND $('[status="'+status+'"]') then show()
答案 0 :(得分:1)
只需组合选择器:
$( “DIV [SEARCHTEXT * = ' ”+ VAL +“'] [状态= ' ”+状态+“']”)
答案 1 :(得分:0)
@kei说的或者您可以使用过滤器,例如:
$("div[searchText*='"+val+"']").filter('[status="'+status+'"]')