Сузить результаты JQuery - PullRequest
0 голосов
/ 15 апреля 2011

Я выполнил поиск элементов следующим образом:

var names = $('[name="' + name + '"]');

как мне сузить этот результат дальше, скажем, например, для поиска конкретных значений?

очевидный ответ заключается в следующем:

var names = $('[name="' + name + '"][value="' + value + '"]');

однако я специально хочу разделить его на 2 этапа.Я посмотрел на find () и has (), однако оба они смотрят в dom, а не в атрибуты dom.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

7 голосов
/ 15 апреля 2011

Используйте .filter вместо:

var names = $('[name="' + name + '"]').filter('[value="' + value + '"]');

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

$(selector)
.filter(function() {
    return (this.attr('name') === name);
})
.filter(function() {
    return (this.attr('value') === value);
});
0 голосов
/ 15 апреля 2011

Просто в дополнение к ответу @Alnitak, вы можете иметь несколько фильтров в одном и том же первом запросе, например:

$('[name="' + name + '"]')
                         .filter('[value="value1"']).doStuff({})
                         .end() //goes back to '[name="' + name + '"]
                         .filter('[value="value2"']).doStuffTwo({});
...