2009-08-10 3 views
0

Gibt es eine Möglichkeit, so etwas Refactoring:Kann ich Elemente mit einer Reihe von Attributwerten auswählen?

$("input[name='InputName1'],input[name='InputName2']").val(""); 

in so etwas wie:

$("input[name='InputName1|InputName2']").val(""); 

Im Wesentlichen ist es möglich, Elemente, ohne dass die sich wiederholende Teile auf einem Satz von Attributwerten wählen basierend der Selektor?

Antwort

1

Die erste Version Sie haben so kurz wie es geht, den Sonderfall zu ignorieren:

$("input[name^=InputName]") 

I Sonderfall sagen, denn wenn Sie beliebige Namen wollen ist es nicht wie sie diese bequem haben werden Präfix die ganze Zeit (ich würde annehmen).

Im Allgemeinen versuche ich Attributselektoren zu vermeiden. Normalerweise habe ich das Gefühl, gescheitert zu sein, wenn ich auf sie zurückgreifen muss. Versuchen Sie, und Marker-Klassen verwenden, wo möglich, so statt:

$("input[name='InputName1'],input[name='InputName2']").val(""); 

Sie geben ihnen sowohl eine Klasse von „Reset“ und zu tun:

$("input.reset").val(""); 
4

Vielleicht könnten Sie den Eingängen eine Klasse geben? Dann könnten Sie einfach $ ('input.clearMe') verwenden.

1

können Sie die starts with Selektor

$("input[name^=InputName]") 

Meine bevorzugte Option jedoch eine Klasse wäre, wie es besser abschneidet.

+1

sollte^= nach docs – Zed

+0

ja ja Tippfehler! :) – redsquare

0

Sie immer einen custom selector schreiben kann, wenn es nicht einen standardmäßig :)

ist

In der Tat, können Sie das Beispiel aus der gelinkten Seite verwenden fast direkt ...

0

Sie den attribute contains Selektor $('input[name*=InputName]') zum Anpassen eines Teils in einem Attributwert verwenden können. Vielleicht wäre ein rel-attribut oder ein Klassenname jedoch ein besserer Weg. Aber das ist subjektiv, nehme ich an.

1

Neben den Eingängen einer Klasse (wie in einer anderen Antwort auf diese Frage vorgeschlagen) ist es möglich, dass die Imputs eine inhärente logische Gruppierung innerhalb des DOM haben? (z.B. alle in Zellen innerhalb einer Tabelle oder alle innerhalb einer bestimmten div).

Anstatt ihnen eine Klasse zu geben, können Sie sie nach ihrer logischen DOM-Gruppierung auswählen und wenn möglich eine ID irgendwo hinzufügen, um die Selektorleistung zu beschleunigen.

Wenn möglich, versuchen Auswahl von Klasse zu vermeiden (obwohl das Beispiel an anderer Stelle ihre Leistung durch die Suche nach ihnen in conjuntion mit dem Eingangselement getroffen mildert)

Verwandte Themen