2009-07-02 3 views
9

を動作しません、私は次のコード行が動作しない理由を見つけるためにしようとしている:jQueryの:に変数を渡します。eq()

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

私は例えば:eq(4):eq(selected)を変更する場合は、 - 正常に動作します。 :eq()の変数としてどのように変数を渡しますか?あなたのセレクタを使用して、変数を連結する必要が

答えて

27

:あなたはそれをやっている

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

コードは正しいですが、それについては何が起こっているのかについての説明は間違っています。 – chaos

+0

ありがとう!私はそれを前に一重引用符で試してみましたが、うまくいきませんでした。私は二重引用符に注意を払っていなかったと思います。 – dalizard

+1

あなたがやっていることは何もエスケープしていないので、最初の文字列 "tr:eq("、選択した変数を追加してから別の文字列を追加する) "を終了しているため、 – chaos

3

方法、あなたは、セレクタでの実際の文字列"selected"を埋め込みました。あなたはそれの一部としてあなたselected変数を使用して文字列を構築する必要があります。

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

また、あなたは、単にseleted値を取得するには「この」オブジェクトを使用することができます。

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

はい、eq() functionに変数を渡すことができます。しかし、あなたはFirebugを無効にする必要があります。それ以外の場合、それは動作しません。

この例を確認してください。

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