2016-05-26 18 views
0

Meine IDE klagt über die ineffiziente Verwendung des jQuery-Selektors und ich frage mich, ob es einen besseren Weg dafür gibt. DankKombinieren von jQuery-Selektoren

$('#login2').addClass('inactive'); 
    $('#login2>input').attr("disabled", 'true'); 
+0

'$ ('# login2'). AddClass ('inaktiv'). Find (" Eingabe "). Attr (" deaktiviert "," deaktiviert ");'? –

+0

Ihr Code ist effizient. Sie sollten fragen, wie Sie Ihre hässliche IDE reparieren können. – choz

Antwort

1

zuordnen $('#login2') zu var:

var $login = $('#login2'); 

$login.addClass('inactive'); 
$login.find('input').prop('disabled', true); 

Sollte auch in der Lage sein zu ketten, aber (zu mir) kann ge t chaotisch:

$login.addClass('inactive').find('input').prop('disabled', true); 
0

jQuery hat .prop() Elementeigenschaften zu verändern und so während der .attr() Verwendung funktionieren wird, wird vorgeschlagen, verwenden .prop():

$("#login2>input").prop("disabled", true); 
+0

'prop()' wird nur für jQuery 1.6 und höher unterstützt –

1

Die Ineffizienz kommt von der Tatsache, dass Sie von der obersten Ebene des DOM für beide Abfragen starten, wenn Ihre zweite Abfrage der spezifischen Teilmenge des DOM unter dem #login2 Element zielen konnte.

Cache Ihr erstes Abfrage-Ergebnis in einer Variablen mit

var $login = $('#login2'); 

Dann rufen Sie .find für die nächste Abfrage. Auf diese Weise muss jQuery nur den kleineren Teilbaum durchlaufen, um input Elemente zu finden.