2013-07-18 34 views
1
$('.list_body').each(function(){ 
    var job_no = $(this).data('job_id'); 
    if($.inArray(job_no, return_data)) { 
     $.noop(); 
    } 
    else { 
     $(this).closest('div.list_body').remove(); 
    } 
}); 

.list_body data-attribute保存作業id引用。根據數組中的值檢查所有元素JQuery

我需要做的是刪除特定的.list_body div如果作業ID不包含在數組return_data

不知道.each()函數是否是最佳做法,因爲目前它似乎擺脫了div,即使作業ID在數組中。

+1

你需要顯示HTML以及 – RiggsFolly

+4

和'$ .inArray'返回'-1'如果它不是數組中,所以如果'job_id'是數組中的第一,元素無論如何都會被移除。如果它不在數組中,'-1'仍然是真的。 – kalley

回答

3

首先,$.inArray回報-1時沒有發現,所以有一個IM調解邏輯缺陷。其次,this是指要刪除的元素,因此使用相同的選擇器查找closest是多餘的。試試這個:

$('.list_body').each(function(){ 
    var $el = $(this); 
    if ($.inArray($el.data('job_id'), return_data) == -1) { 
     $el.remove(); 
    } 
}); 
1

嘗試

var return_data = [2] 

$('.list_body').each(function(){ 
    var job_no = $(this).data('job_id'); 
    if($.inArray(job_no, return_data) > -1) { 
     $(this).closest('div.list_body').remove(); 
    } 
}); 

演示:Fiddle

一個更好的解決方案將是

$('.list_body').filter(function(idx, el){ 
    return $.inArray($(this).data('job_id'), return_data) > -1; 
}).remove(); 

演示:Fiddle

相關問題