2009-10-05 40 views
144

Tôi có một trang với 5 lựa chọn mà tất cả đều có tên lớp 'ct'. Tôi cần phải loại bỏ các tùy chọn với một giá trị của 'X' từ mỗi lựa chọn trong khi chạy một sự kiện onclick. Mã của tôi là:jQuery xóa các tùy chọn khỏi chọn

$(".ct").each(function() { 
    $(this).find('X').remove(); 
    }); 

Tôi sẽ làm gì sai?

Trả lời

313

Hãy thử điều này:

$(".ct option[value='X']").each(function() { 
    $(this).remove(); 
}); 

Hoặc để được ngắn gọn hơn, điều này sẽ chỉ làm việc cũng như:

$(".ct option[value='X']").remove(); 
+1

Điều này phù hợp với tôi. Cảm ơn. Sytax là gì để giới hạn này với .ct với giá trị được chọn = ''? – user135498

+0

Tôi đã giải quyết vấn đề này bằng cách sắp xếp lại các cuộc gọi của mình. Cảm ơn. – user135498

+0

Làm việc cho tôi cũng ............ Cảm ơn. –

21

find() mất một selector, không phải là một giá trị. Điều này có nghĩa là bạn cần sử dụng nó giống như cách bạn sử dụng hàm jQuery thông thường ($('selector')).

Vì vậy, bạn cần phải làm điều gì đó như thế này:

$(this).find('[value="X"]').remove(); 

Xem các tài liệu jQuery find.

+0

tốt hơn nhiều trong trường hợp bạn đang truyền một biến cho phụ thêm – Neurothustra

40
$('.ct option').each(function() { 
    if ($(this).val() == 'X') { 
     $(this).remove(); 
    } 
}); 

Hoặc chỉ cần

$('.ct option[value="X"]').remove(); 

điểm chính là find mất một chuỗi selector, bằng cách cho ăn nó x bạn đang tìm kiếm phần tử có tên x.

+4

+1 tôi thích câu trả lời này, tôi nghĩ nó tốt hơn vì tôi có thể kiểm tra 'X' như hoặc một phần của 'giá trị' cho phần tử'