2016-07-26 10 views
3

Ich versuche, das eigentliche Element in meiner bedingten Anweisung erwähnte zum Ziel, hier ist ein Beispiel für meinen Code:Ziel einzelnes Element in bedingter Anweisung erwähnt jQuery

let selectValue = $('.Select input').val(); 
    if ($('.vehicle-item').attr('data-value') != selectValue) { 
    //Add a class to the element that hasn't got an attribute equal to the `selectValue` variable. 
    } 

Also im Grunde auf meiner Seite gibt es mehrere Elemente mit Die Klasse von .vehicle-item einige von diesen werden die bedingte Anweisung übergeben und einige werden nicht. Ich möchte eine Klasse zu allen Elementen mit dieser Klasse hinzufügen, die die bedingte Anweisung nicht übergeben.

Wenn ich irgendwie über diese bedingte Anweisung für jedes Element, das nicht bestanden hat, iterieren kann und eine Klasse hinzufüge, die funktionieren würde, aber wie mache ich das?

Antwort

2

können Sie filter() verwenden, dies zu erreichen:

let selectValue = $('.Select input').val(); 
$('.vehicle-item').filter(function() { 
    return $(this).data('value') != selectValue; 
}).addClass('foo'); 

Alternativ können Sie das Attribut-Selektor:

let selectValue = $('.Select input').val(); 
$('.vehicle-item[data-value!="' + selectValue + '"]').addClass('foo'); 

Beachten Sie, dass diese liest die Daten direkt aus dem Element-Attribut, wenn Sie also Aktualisieren Sie den Wert programmgesteuert nach dem Laden der Seite haben Siefilter() zu verwenden.

Persönlich würde ich filter() sowieso verwenden, wie es in den meisten Browsern etwas schneller ist und ich finde es einfacher zu lesen.

0

Sie können dies direkt mit "nicht gleich" Selektor und Mehrfachauswahlfunktion tun.

$(".vehicle-item[data-value!='"+selectValue+"']").each(function(){ 
     // do something 
}); 
Verwandte Themen