JQuery: фильтр с несколькими классами
Есть ли хороший способ для фильтрации выбранных элементов до нескольких классов? Я знаю, что смогу делать их по одному, но это просто похоже на то, что позволит jQuery.
Они обрабатываются с помощью ajax, и у меня нет доступа к определению фактического html.
$('.val>td').each(function () {
$(this).filter('.price,.quantity,.remove').children().children().addClass('hidetaxfields');
});
Ответы
Ответ 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');
});