2013-02-27 20 views
10

Seçilen öğeleri birkaç sınıfa kadar filtrelemek için iyi bir yol var mı? Her seferinde bir tane yapabileceğimi biliyorum, ama bu sadece jQuery'nin izin verdiği bir şey gibi görünüyordu.jQuery: Birden çok sınıfa sahip filtre

Bunlar ajax ile sunulmakta olup, gerçek html'yi tanımlamak için erişimim yoktur.

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

Vergi alanlarınıza doğrudan sınıf eklemek daha kolay olmaz, böylece bunları gizlenmek için kolayca seçebilirsiniz? –

+0

Kafam karıştı, '.price, .quantity, .remove 'öğesini .filter()' de kullanıp kullanamayacağınızı mı soruyorsunuz? .filter() 'jQuery selektörü aldığından, sahip olduğunuz çoklu seçim ölçütlerini ayırmak için virgül kullanabilirsiniz. Bu "Çoklu Seçici": http://api.jquery.com/multiple-selector/ – ajp15243

+0

Evet, denediğim senaryo bu. Sadece işe yaramadı. –

cevap

19

sen isnt net olarak ne istiyorsunuz eskiden mple sen ... vermek

Bu one VEYA two sınıf var açmasının selektör ile eşleşen elemanların bir alt kümesini üretecek:

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

Bu açmasının ile eşleşen elemanların bir alt kümesini üretecek sahip seçici HEM sınıfları one VE two: filtresiyle

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

Birincisi benim için ne olduğunu. Acaba neden işe yaramadı? –

+0

Eksik alan mı? –

+0

Beyaz alan orada alakasız. –

1

çalışması gerekir .is() yöntemi kullanarak:

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

Ama bu bile daha iyidir:

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

veya bu:

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

bunu gibi yapabilirsiniz bir filtre fonksiyonunu (demo) yazabilirsiniz:

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

v kullanışlı, teşekkürler! – ptim

İlgili konular