2012-02-12 38 views
10

tôi có một danh sách năng động, trông như thế này:Loại bỏ yếu tố cụ thể từ một danh sách với JQuery

<ul> 
<li class="border" id="tl_1">Text1</li> 
<li class="border" id="tl_2">Text2</li> 
<li class="border" id="tl_3">Text3</li> 
</ul> 

Danh sách này có thể có các mục hơn ba.

Khi ai đó nhấp vào một nút cụ thể, tôi muốn điều đó, ví dụ: "tl_2" sẽ bị xóa khỏi danh sách. Tôi đã thử nó whith các lệnh JQuery, nhưng không trong số họ đã làm việc:

$('#tl_2').remove(); 

hoặc

$('li').find('tl_1').remove(); 

Làm thế nào tôi có thể giải quyết này?

+1

Hiển thị những gì bạn đã thử, nó sẽ hoạt động ... – gdoron

+0

Lưu ý rằng không cần phải "tìm" phần tử bằng 'id'.'id' là duy nhất – gdoron

+0

@Torben, khi bạn nói' dynamic', bạn có nghĩa là các mục danh sách được điền động thông qua yêu cầu của một số loại, có thể * sau * mã trong câu hỏi của bạn đã chạy? –

Trả lời

-1

Bạn phải có lỗi ở một nơi khác, bởi vì những gì bạn có just works.

Vui lòng kiểm tra bảng điều khiển lỗi của bạn.

Mặc dù ví dụ thứ hai của bạn nên là:

$('ul').find('#tl_2').remove(); // but this isn't really needed since we are selecting by id. So just go for the first example which is faster. 
+2

Có thể nhiều hơn một phần tử có cùng ID, trong trường hợp này chỉ có phần tử đầu tiên sẽ bị loại bỏ. ] (http://jsfiddle.net/AF7jw/3/) –

+0

@ShadowWizard Cuộc gọi tốt Vâng OP bạn có cùng một ID nhiều hơn một lần trong DOM không? – PeeHaa

+0

OP sẽ không nhận được thông báo về nhận xét của bạn ở đây, đăng nhận xét về câu hỏi của mình để anh ấy nhận được thông báo và hy vọng trả lời. :) –

10

Bạn có thể đã có một số sai lầm ngớ ngẩn, nó nên làm việc:

$('#buttonId').click(function(){ 
     $('#tl_2').remove(); 
    }); 

Lưu ý rằng không có cần phải "tìm" cho các phần tử của id . id là duy nhất.

$('li').find('tl_1').remove(); // And you were missing the # anyway... 

Đảm bảo bạn chỉ có một phần tử cho mỗi id. id giống id ... Bạn chỉ có thể có một giá trị giống nhau.

Mỗi giá trị id chỉ được sử dụng một lần trong tài liệu. Nếu có nhiều hơn một phần tử đã được gán cùng một ID, các truy vấn sử dụng ID đó sẽ chỉ chọn phần tử được so khớp đầu tiên trong DOM. Tuy nhiên, hành vi này không nên dựa vào; tài liệu có nhiều hơn một phần tử sử dụng cùng một ID không hợp lệ.

+0

Nó * khá ngớ ngẩn - Tôi quên biểu tượng '#'. – ashes999

15

Bạn có thể có nhiều hơn một phần tử có cùng ID.

Bạn không cần phải sử dụng ID ở tất cả trong trường hợp bạn muốn loại bỏ chúng bằng cách chỉ số bạn có thể sử dụng phương pháp .eq():

$("#btnRemove").click(function() { 
    $("#myList li").eq(1).remove(); 
}); 

này sẽ loại bỏ các mục trong danh sách thứ hai mỗi nhấp chuột.

Live test case.

1

Tôi nghĩ bạn không hiển thị cho chúng tôi một phần mã của bạn vì tôi nghi ngờ bạn đang cố gắng tạo id đó theo cách động, nghĩa là bạn cũng tự động đặt id đó. bạn phải đảm bảo rằng không có ký tự 'khoảng trắng' nào trong id có khả năng gây rối lên ...

$('#tl_2').remove(); 

Hoạt động theo tài liệu jquery. nó làm việc cho tôi.

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