2012-08-26 42 views
15

Vấn đề đơn giản. Tôi có một biến js tôi muốn được ghép nối quá trong một bộ chọn jQuery. Tuy nhiên nó không hoạt động. Không có lỗi nào xuất hiện. Chuyện gì thế? Làm cách nào để kết hợp chính xác một biến cho một số văn bản trong bộ chọn jQuery.Ghép nối trong Bộ chọn jQuery

<div id="part2"></div> 

<script type="text/javascript" > 

$('#button').click(function() 
{ 
var text = $('#text').val();  
var number = 2; 
$.post('ajaxskeleton.php', { 
red: text  
}, 
    function(){ 
    $('#part' + number).html(text); 
    }); 
}); 


</script> 
+3

Bạn nên tạo một fiddle: http://jsfiddle.net/. – valentinas

+0

@ ason328, bạn có biết về 'console.log()'. Với sự giúp đỡ của nó, bằng cách đặt nó trong các dòng thú vị, bạn có thể thấy những gì đang xảy ra trong bước mã của bạn bằng cách bước – user907860

+0

Không, tôi đã không biết về nó. Tôi sẽ xem xét điều đó ngay bây giờ. – jason328

Trả lời

30

Không có gì sai với cú pháp của

$('#part' + number).html(text); 

jQuery là chấp nhận một String (thường là một CSS Selector) hoặc một DOM Node như tham số để tạo ra một jQuery Object.

Trong trường hợp của bạn, bạn phải vượt qua một String để $() đó là

$(<a string>) 

Đảm bảo bạn có quyền truy cập vào các biến numbertext.

Để kiểm tra làm:

function(){ 
    alert(number + ":" + text);//or use console.log(number + ":" + text) 
    $('#part' + number).html(text); 
}); 

Nếu bạn thấy bạn không có quyền truy cập, vượt qua chúng như tham số cho hàm, bạn phải bao gồm các thông số uual với $ .get và vượt qua các thông số tùy chỉnh sau đó.

+2

Tuyệt vời. Cảm ơn lời giải thích rõ ràng. Số var của tôi được gọi là undefined, mà tôi đã nhanh chóng sửa. – jason328

+0

Gald rằng nó cố định. Nhưng bây giờ Im bối rối, Làm thế nào bạn sửa chữa nó? :) – sabithpocker

+1

Lỗi Noob. Tôi đã gọi số var bên ngoài sự kiện nhấp chuột. – jason328

2

Cú pháp nối của bạn là chính xác.

Nhiều khả năng chức năng gọi lại thậm chí không được gọi. Bạn có thể kiểm tra điều đó bằng cách đặt một dòng alert(), console.log() hoặc debugger trong hàm đó.

Nếu không được gọi, rất có thể xảy ra lỗi AJAX. Nhìn vào chaining một handler .fail() sau $.post() để tìm ra những lỗi này là, ví dụ .:

$.post('ajaxskeleton.php', { 
    red: text  
}, function(){ 
    $('#part' + number).html(text); 
}).fail(function(jqXHR, textStatus, errorThrown) { 
    console.log(arguments); 
}); 
+0

phạm vi bên trong cuộc gọi $ .get là gì? số biến và văn bản có thể truy cập ở đó không? – sabithpocker

+1

@sabithpocker nếu mã ở trên của bạn hoàn tất, sau đó 'số' và' văn bản' sẽ có thể truy cập được vì chúng là một phần của phạm vi _lexical_. Biến "gotcha" trong callbacks là 'this', nhưng bạn không dùng nó. – Alnitak

+0

Cảm ơn bạn đã đưa ánh sáng vào phạm vi từ vựng. – sabithpocker