Подтвердить что ты не робот

JQuery: фильтр с несколькими классами

Есть ли хороший способ для фильтрации выбранных элементов до нескольких классов? Я знаю, что смогу делать их по одному, но это просто похоже на то, что позволит jQuery.

Они обрабатываются с помощью ajax, и у меня нет доступа к определению фактического html.

$('.val>td').each(function () {
    $(this).filter('.price,.quantity,.remove').children().children().addClass('hidetaxfields');
});
4b9b3361

Ответ 1

То, что вы спрашиваете, не ясно из того, что вы даете...

Это приведет к получению подмножества элементов, соответствующих встроенному селектору, который имеет класс one OR two:

$(selector).filter('.one, .two');

Это приведет к получению подмножества элементов, согласованных с помощью встроенного селектора, которые имеют BOTH классы one AND two:

$(selector).filter('.one.two');

Ответ 2

С фильтром вы можете написать функцию фильтра, которая может так сделать (demo):

$('.val>td').filter(function () {
    var that = $(this);
    return that.hasClass('price') || that.hasClass('remove') || that.hasClass('quantity');
}).addClass('hidetaxfields');

Ответ 3

Использование метода .is() должно работать:

$('.val>td').each(function () {
    var $this = $(this);
    if( $this.is('.price, .quantity, .remove') ){
        $this.children().children().addClass('hidetaxfields');
    }
});

Но это еще лучше:

$('.val>td.price, .val>td.quantity, .val>td.remove').each(function () {
    $(this).children().children().addClass('hidetaxfields');
});

или это:

var $tds = $('.val>td').filter('.price, .quantity, .remove');
$tds.each(function () {
    $(this).children().children().addClass('hidetaxfields');
});