2010-04-07 42 views
13

Kịch bản là tôi có hai div s: một là nơi tôi chọn các mục (divResults) và nó đi đến div tiếp theo (divSelectedContacts). Khi tôi chọn nó, tôi đặt một dấu tích bên cạnh nó. Những gì tôi muốn làm là khi tôi chọn nó một lần nữa tôi muốn loại bỏ dấu tick và cũng loại bỏ các yếu tố từ divSelectedContacts.

Đây là mã:

$("#divResults li").click(function() 
{ 
    if ($(this).find('span').size() == 1) 
    { 
     var copyElement = $(this).children().clone(); 
     $(this).children().prepend("<span class='ui-icon ui-icon-check checked' style='float:left'></span>"); 
     $("#divSelectedContacts").append(copyElement); 
    } else 
    { 
     var deleteElement = $(this).find('span'); //here is the problem how to find the first span and delete it 
     $(deleteElement).remove(); 
     var copyElement = $(this).children().clone();//get the child element 
     $("#divSelectedContacts").find(copyElement).remove(); //remove that element by finding it 
    } 
}); 

Tôi không biết làm thế nào để chọn span đầu tiên trong một li sử dụng $(this). Bất kỳ sự giúp đỡ nào cũng được đánh giá cao.

Trả lời

26

Một số cách sau:

$(this).find('span:first'); 

$(this).find(':first-child'); 

$(this).find('span').eq(0); 

Lưu ý rằng bạn không cần phải sử dụng $(deleteElement) như deleteElement đã là một đối tượng jQuery . Vì vậy, bạn có thể làm điều đó như thế này:

$(this).find('span:first').remove(); 
+0

Cảm ơn bạn rất nhiều :-). Việc xóa bỏ đã không xảy ra với tôi. Nắm bắt tốt. – Raja

5

Để có được đứa con đầu lòng của $(this) sử dụng này:

$(this).find(":first-child"); 
5

hoặc bạn chỉ có thể ném tất cả vào bộ chọn ...

$('span:first', this); 
+0

Tôi thích nó, tốt nhất! – Gabe

+0

ngọt Tôi thích việc triển khai này. 1 cho bạn. – Raja

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