【问题标题】:jQuery filter() - filtering on multiple attributesjQuery filter() - 过滤多个属性
【发布时间】:2011-02-05 14:44:24
【问题描述】:

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

即id="someId" level="someLevel"

这段代码不应该起到作用吗……它似乎不起作用。

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

【问题讨论】:

  • 顺便说一句:我想做相当于 SQL AND 语句而不是 OR 语句。

标签: jquery filter jquery-selectors


【解决方案1】:

如果它是一个条件,你真的应该有一个助手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();

【讨论】:

    【解决方案2】:

    怎么样

    $(".someClass").filter("filter1").filter("filter2") 
    

    ?

    【讨论】:

      【解决方案3】:

      您可以在过滤器函数中使用Multiple Attribute Selector

      【讨论】:

        【解决方案4】:

        您提供了两个参数:

        .filter("#someId", "[level='someLevel']")
        

        你可能想要这个:

        .filter("#someId[level=someLevel]")
        

        【讨论】:

          猜你喜欢
          • 2021-09-23
          • 2018-05-30
          • 2019-08-23
          • 2021-03-17
          • 1970-01-01
          • 1970-01-01
          • 2020-04-27
          • 2021-03-21
          • 1970-01-01
          相关资源
          最近更新 更多