2009-07-02 12 views
9

Ben Aşağıdaki kod satırlarını çalışmıyor nedenini öğrenmek için çalışıyorlar:jQuery: değişkeni geçirin: eq() çalışmıyor

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

Ben mesela :eq(4) için :eq(selected) değiştirirseniz - çalışıyor . Değişkeni :eq() değişkenine nasıl geçirirsiniz?

cevap

27

Sen seçici ile Değişkeninizi bitiştirmek zorunda:

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

Bu kod doğru, ancak bununla ilgili açıklama çok yanlış. – chaos

+0

Teşekkürler! Daha önce tek tırnak denedim ve işe yaramadı. Sanırım çift tırnaklara dikkat etmedim. – dalizard

+1

Doğru, tek tırnaklar işe yaramadı çünkü yaptığınız şey 'kaçma' değil, ilk dizgeyi sonlandırıyor "tr: ​​eq (", seçili değişkenin eklenmesi ve ardından "string") eklenmesi. – chaos

3

bunu yaparsınız şekilde, seçicinin gerçek dize "selected" katıştırma ediyoruz. Sen bunun bir parçası olarak selected değişkeni kullanarak bir dize oluşturmak gerekir:

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

Ayrıca, sadece seleted değeri elde etmek 'bu' nesnesini kullanabilirsiniz.

0

Evet, eq() function değişkenini geçirebiliriz. Ama Firebug devre dışı bırakmanız gerekir. Aksi halde işe yaramaz.

bu örneği kontrol edin.

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