2009-07-02 11 views
9

ich, warum nicht funktionieren die folgenden Codezeilen, um herauszufinden, haben versucht, funktioniert: jQuery: Pass Variable: eq() nicht

$('#add-cloud > select').change(function() { 
    var selected = parseInt($('#add-cloud select option:selected').val()); 
    $("#cloud-calculator table tr:eq(selected)").css("color", "red"); 
}); 

Wenn ich :eq(selected)- :eq(4) zum Beispiel ändern - funktioniert gut . Wie übergibt man die Variable als Argument an :eq()?

Antwort

27

Sie haben Ihre Variable mit Ihrem Wähler verketten:

$("tr:eq("+selected+")"); 
+3

Der Code ist richtig, aber die Beschreibung dessen, was damit passiert, ist sehr falsch. – chaos

+0

Danke! Ich habe es vorher mit einfachen Anführungszeichen versucht und es hat nicht funktioniert. Ich glaube, ich habe die doppelten Anführungszeichen nicht beachtet. – dalizard

+1

Richtig, einfache Anführungszeichen funktionierten nicht, weil das, was Sie tun, nichts "entkommt", es beendet die erste Zeichenkette "tr: ​​eq (", fügt die ausgewählte Variable hinzu und fügt dann eine weitere Zeichenkette ")" hinzu. – chaos

3

Die Art und Weise Sie es tun, werden Sie die tatsächliche Zeichenfolge "selected" in der Auswahl einbetten. Sie benötigen einen String mit Ihrem selected Variable als Teil davon zu konstruieren:

$("#cloud-calculator table tr:eq(" + selected + ")").css("color", "red"); 
1

Auch können Sie einfach das ‚this‘ Objekt den seleted Wert zu erhalten.

$('#add-cloud > select').change(function() 
{ 
    var rowSelector = '#cloud-calculator table tr:eq(' + parseInt(this.val()) + ')'; 
    $(rowSelector).css("color", "red"); 
} 
0

Ja, wir können Variable an eq() function übergeben. Aber Sie müssen Firebug deaktivieren. Sonst wird es nicht funktionieren.

Bitte überprüfen Sie dieses Beispiel.

var index = 3  
$('#sidebar_menu li:eq('+index+')').css({"color":"#050959"});