2013-02-13 34 views
7

Trước hết, xin lỗi vì tiếng anh xấu của tôi.JQuery - Cách ghép nối văn bản với .each?

Tôi đã thử các phương pháp khác nhau nhưng chưa có bất kỳ may mắn nào.

Tôi đang trả về một loạt các đối tượng bằng phương thức .each().

Tôi muốn điền thuộc tính "giá trị" của trường nhập với mỗi giá trị từ đối tượng. Tôi không tìm được cách làm giống như PHP. =

Bất kỳ ý tưởng nào cũng tuyệt vời!

Dưới đây là mã của tôi:

$.each($("input[type='checkbox']:checked"), function(){ 
     var data = $(this).parent().parent().find("td:eq(1)"); 
     $("#login").val(data.text()); 
    }) 

Trả lời

5
var c = ''; 
$.each($("input[type='checkbox']:checked"), function(){ 
    var data = $(this).parent().parent().find("td:eq(1)"); 
    c += data.text(); 
}) 
$("#login").val(c); 

Bạn cũng có thể đã sử dụng này trong vòng lặp:

$("#login").val($("#login").val(c)+data.text()); 

nhưng cá nhân tôi thích để giảm thiểu những thay đổi của DOM.

Cũng lưu ý rằng việc sử dụng các traversals như parent().parent() dẫn đến các vấn đề về bảo trì. Trong trường hợp của bạn, bạn có thể có thể sử dụng

var data = $(this).closest('tr').find("td:eq(1)"); 

để mã sẽ không phá vỡ nếu một span hoặc bất kỳ yếu tố khác kết thúc tốt đẹp đầu vào của bạn trong tương lai.

+0

Cảm ơn bạn rất nhiều! Nó thực sự hoạt động tốt! – skytorner

12

Bạn có thể sử dụng map(). Bạn có thể chuyển ký tự delimiter tới join() để phân tách các màu.

text = $("input[type='checkbox']:checked").map(function(){ 
    return $(this).parent().parent().find("td:eq(1)");   
}).get().join(); 

$("#login").val(text); 
+1

Điều này rất thanh lịch và phải là câu trả lời được chấp nhận. – kontur

Các vấn đề liên quan