2012-02-08 27 views
6

Làm cách nào tôi có thể sao chép một DIV, nối nó ngay sau div và cung cấp cho nó một mã định danh mới?jQuery .clone .insertSau khi có một ID mới

Tôi có một DIV với một lớp reflection, tôi muốn mỗi trường hợp của Bảo hiểm tiền này, nhân bản, và chèn ngay sau khi bản gốc, nhưng với lớp reflected (không có lớp, reflection) Làm thế nào tôi có thể thực hiện điều này với jQuery?

Dưới đây là fiddle hiện tại của tôi, nhưng nó không hoạt động đúng ... http://jsfiddle.net/yUgn9/

+0

@rusty, Câu trả lời của bạn đi đâu, nó đúng? – henryaaron

Trả lời

9

Chuyển hàm tới .after() và chuyển nó trở lại bản sao được cập nhật.

$('div.reflection').after(function() { 
    return $(this).clone().toggleClass('reflection reflected'); 
}); 

DEMO:http://jsfiddle.net/PFBVX/


Trong các phiên bản cũ của jQuery, làm được điều này ...

$('div.reflection').each(function() { 
    $(this).after($(this).clone().toggleClass('reflection reflected')); 
}); 

DEMO:http://jsfiddle.net/PFBVX/1/

+0

Xin lỗi ... không hoạt động với 1.4.2 – henryaaron

+0

@ user1090389: Sau đó, bạn sẽ làm điều tương tự, nhưng với '.each()'. Tôi sẽ cập nhật. –

+2

Chúa tôi yêu StackOverflow! Một tìm kiếm, kết quả đầu tiên! Cảm ơn! – NaturalBornCamper

2

Tôi tin rằng bạn sẽ cần phải .each() của họ để xử lý chúng riêng rẽ. Những gì mã hiện đang làm là lấy tất cả chúng và nhân bản chúng sau khi tất cả chúng. Thay vào đó, bạn muốn xử lý từng cá nhân và chèn bản sao sau bản gốc, sau khi thay đổi các lớp xung quanh như mong muốn.

$(document).ready(function(){ 

    $('div.reflection').each(function() { 
     var org = $(this), 
      clone = org.clone(); 

     clone.removeClass('reflection').addClass('reflected') 
      .insertAfter(org); 
    }); 

}); 
Các vấn đề liên quan