2013-08-25 72 views
14

Giả sử tôi có một số <div> có chứa một số yếu tố ngẫu nhiên, nhưng có một phần tử tôi đã tạo bằng công cụ chọn duy nhất này: $('.myUniqueElement'). Tôi muốn sử dụng .insertAfter() để di chuyển yếu tố này ở vị trí con cuối cùng trong số <div> của tôi là có thể? Giải pháp là gì ?yếu tố di chuyển jquery đến vị trí con cuối cùng

Đây là giải pháp của tôi: http://jsfiddle.net/silverlight/RmB5K/3/ OK?

HTML:

<div class='p'> 
    <div class='myUniqueElement'>unique</div> 
    <div>item</div> 
    <div>item</div> 
    <div>item</div> 
</div> 
<input type='button' id='b' value='Do'/> 

Javascript:

$('#b').on('click',function(){ 
    $('.myUniqueElement').insertAfter($('.p :last-child')) 
}); 

CSS:

.myUniqueElement{color:red;} 
+0

bài viết đoạn mã HTML của bạn ... –

+0

này là giải pháp của tôi, điều này có ổn không?[fiddle] (http://jsfiddle.net/silverlight/RmB5K/3/) – Omid

+0

kiểm tra câu trả lời của tôi với fiddle –

Trả lời

24

Hãy thử

var mydiv = $('my-div-selector'); 
mydiv.find('.myUniqueElement').appendTo(mydiv) 

hoặc đơn giản

$('my-div').append($('.myUniqueElement')) 
+0

thử http://jsfiddle.net/arunpjohny/6c6zr/1/ –

+0

http://jsfiddle.net/silverlight/RmB5K/3/ có đúng không? – Omid

+1

@OMiD có nó là –

-1

Để sử dụng insertAfter(), bạn phải biết các yếu tố sau đó bạn muốn di chuyển phần tử của bạn đến. Và như bạn nói bạn có các yếu tố ngẫu nhiên, và tất nhiên bạn không biết nguyên tố cuối cùng hiện tại, vì vậy ở đây bạn có thể làm gì.

Sao chép phần tử mà bạn muốn di chuyển và thêm phần tử đó vào phần tử gốc.

Mã jQuery trông như thế này:

$clone_elem = $('.myUniqueElement').clone(); 
$('.myUniqueElement').remove(); 
$('div').append($clone_elem); 

Thanh toán này fiddle

+1

Điều này có ổn không? http://jsfiddle.net/silverlight/RmB5K/3/ – Omid

+0

Tốt, bạn có giải pháp tốt hơn, +1 cho bạn. –

+0

'.clone' chỉ nên được sử dụng nếu bạn thực sự muốn sao chép một phần tử. Các phần tử _Moving_ được thực hiện một cách trivially mà không cần sao chép chúng. – Alnitak

-1

Vikas là đúng. Tuy nhiên, có lẽ cái này là một phiên bản cải tiến của nó kể từ khi các yếu tố gốc được lấy ra, không clone của nó ....

$elem = $('.myUniqueElement') 
    $('div').append($elem.clone()); 
    $elem.remove(); 
2

này là giải pháp của tôi và tôi nghĩ đây là cách tốt nhất tôi có thể sử dụng .insertAfter():

HTML:

<div class='p'> 
    <div class='myUniqueElement'>unique</div> 
    <div>item</div> 
    <div>item</div> 
    <div>item</div> 
</div> 
<input type='button' id='b' value='Do'/> 

jquery:

$('#b').on('click',function(){ 
    $('.myUniqueElement').insertAfter($('.p :last-child')) 
}); 

Vấn đề là :last-child và đây là fiddle: http://jsfiddle.net/silverlight/RmB5K/3/

6

Không có nhu cầu sử dụng .insertAfter. Bạn cũng nên không sử dụng .clone vì nó sẽ xóa mọi dữ liệu hoặc sự kiện được đính kèm trừ khi bạn sử dụng .clone(true).

Đơn giản chỉ cần sử dụng .appendTo để thêm các yếu tố mục tiêu đến div và nó sẽ được tách ra khỏi vị trí ban đầu của nó và thêm vào như là đứa trẻ cuối cùng của div:

$('.myUniqueElement').appendTo('#my-div');