jQuery filter () - фильтрация по нескольким атрибутам - PullRequest
3 голосов
/ 08 апреля 2010

Я хочу фильтровать на основе двух атрибутов, первый из которых id, а второй называется level

т.е. id = "someId" level = "someLevel"

Не должен ли этот кодсделать трюк ... это не похоже на работу.

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

Ответы [ 4 ]

3 голосов
/ 08 апреля 2010

а как же

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

3 голосов
/ 08 апреля 2010

Вы предоставляете два аргумента:

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

Вы, вероятно, хотите это:

.filter("#someId[level=someLevel]")
2 голосов
/ 08 апреля 2010

Вы можете использовать Выбор нескольких атрибутов в своей функции фильтра.

0 голосов
/ 08 апреля 2010

Если это условие или , у вас действительно должна быть вспомогательная функция , такая как формат строки :

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...