我想根据两个属性进行过滤,第一个是id,第二个叫做level
即。 id =“someId”level =“someLevel”
这段代码不应该这样做......它似乎不起作用。
$(".someClass").filter("#"+id, "[level='"+level+"']").someAction();
答案 0 :(得分:3)
您提供两个参数:
.filter("#someId", "[level='someLevel']")
你可能想要这个:
.filter("#someId[level=someLevel]")
答案 1 :(得分:3)
怎么样
$(".someClass").filter("filter1").filter("filter2")
答案 2 :(得分:2)
您可以在过滤功能中使用Multiple Attribute Selector。
答案 3 :(得分:0)
如果是或条件,您应该有一个帮助function like string format:
string.Format = function( text )
{
//check if there are two arguments in the arguments list
if ( arguments.length <= 1 )
{
//if there are not 2 or more arguments there’s nothing to replace
//just return the original text
return text;
}
//decrement to move to the second argument in the array
var tokenCount = arguments.length - 2;
for( var token = 0; token <= tokenCount; token++ )
{
//iterate through the tokens and replace their placeholders from the original text in order
text = text.replace( new RegExp( "\\{" + token + "\\}", "gi" ),
arguments[ token + 1 ] );
}
return text;
};
然后很简单:
var filter = string.format("#{0}, [level='{1}']", id, level);
$(".someClass").filter(filter).someAction();