jQuery filter() - 对多个属性进行过滤

时间:2010-04-08 08:46:25

标签: jquery filter jquery-selectors

我想根据两个属性进行过滤,第一个是id,第二个叫做level

即。 id =“someId”level =“someLevel”

这段代码不应该这样做......它似乎不起作用。

$(".someClass").filter("#"+id, "[level='"+level+"']").someAction();

4 个答案:

答案 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();