2012-05-21 28 views
10
<div class="row-container" data-i="'+data[i].product_id+'"> 
<div class="row-container" data-i="'+data[i].product_id+'"> 
<div class="row-container" data-i="'+data[i].product_id+'"> 
<div class="row-container" data-i="'+data[i].product_id+'"> 

Tôi muốn xóa vùng chứa chứa một product_id cụ thể. Tôi biết dữ liệu ('i') lấy giá trị, nhưng tôi không biết đi đâu từ đó.cố gắng xóa thẻ div dựa trên thuộc tính dữ liệu

+0

bài liên quan: http://stackoverflow.com/questions/1009485/jquery-filter-element-based-on-data-key-value –

Trả lời

23
$('.row-container').filter(function(){ 
    return $(this).data('i') === "product_id" 
}).remove(); 

.data phép bạn thiết lập và nhận được các biến khác bên cạnh các chuỗi (chức năng và các đối tượng)

Bạn cũng có thể sử dụng này:

$('.row-container').filter('[data-i="product_id"]').remove(); 

Hoặc với một bộ chọn:

$('.row-container[data-i="product_id"]').remove(); 

(Trong trường hợp "product_id" là một giữ chỗ cho giá trị thực ...)

+1

+1 Chỉ cần thay đổi '" foo "' thành '" product_id "' để rõ ràng. Ngoài ra không phải là cuối cùng quá nhanh hơn? – iambriansreed

+0

@iambriansreed. Có lẽ là có ... nhưng đó là một thay đổi nhỏ. – gdoron

4

Bạn có thể sử dụng filter():

var $div = $(".row-container").filter(function() { 
    return $(this).data("i") == value; // where value == product id to find 
}); 
$div.remove(); 
+0

@iambriansreed đúng, nhưng tôi muốn làm cho câu trả lời của tôi là rõ ràng càng tốt. –

+0

Nevermind. Có một câu trả lời tốt hơn. – iambriansreed

+0

+1, tôi không nghĩ rằng tôi tốt hơn rất nhiều. – gdoron

3

Có một attribute selector trong jQuery mà bạn có thể sử dụng để tìm các yếu tố mà bạn đang tìm kiếm.

$('div.row-container[data-i="<value>"]'); 
Các vấn đề liên quan