2009-07-02 21 views
9

Tôi đã cố gắng để tìm hiểu tại sao các dòng mã sau đây không làm việc:jQuery: Vượt qua biến: eq() không hoạt động

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

Nếu tôi thay đổi :eq(selected)-:eq(4) ví dụ - hoạt động tốt . Làm thế nào để bạn chuyển biến làm đối số cho :eq()?

Trả lời

27

Bạn cần phải nối biến của bạn với chọn của bạn:

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

Mã này đúng, nhưng mô tả những gì đang xảy ra với nó là rất sai. – chaos

+0

Cảm ơn bạn! Tôi đã thử nó nó đơn báo giá trước và nó đã không hoạt động. Tôi đoán tôi đã không chú ý đến các dấu ngoặc kép. – dalizard

+1

Phải, dấu nháy đơn không hoạt động vì những gì bạn đang làm không phải là 'thoát' bất cứ điều gì, nó chấm dứt chuỗi đầu tiên "tr: ​​eq (", thêm biến đã chọn và sau đó thêm chuỗi khác ")". – chaos

3

Cách bạn đang làm việc đó, bạn đang nhúng chuỗi thực tế "selected" trong bộ chọn. Bạn cần phải xây dựng một chuỗi sử dụng biến selected của bạn như là một phần của nó:

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

Ngoài ra, bạn chỉ có thể sử dụng đối tượng 'này' để lấy giá trị seleted.

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

Có, chúng tôi có thể chuyển biến thành eq() function. Nhưng bạn cần vô hiệu hóa Firebug. Nếu không nó sẽ không hoạt động.

Vui lòng kiểm tra ví dụ này.

var index = 3  
$('#sidebar_menu li:eq('+index+')').css({"color":"#050959"}); 
Các vấn đề liên quan