$('.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引用。
如果作业ID未包含在数组.list_body
中,我需要删除特定的return_data
div。
不确定.each()
函数是否是最佳实践,因为当前它似乎摆脱了div,即使作业ID在数组中。
答案 0 :(得分:3)
首先,$.inArray
在找不到时返回-1
,因此存在一个直接的逻辑缺陷。其次,this
指的是您要删除的元素,因此查找具有相同选择器的closest
是多余的。试试这个:
$('.list_body').each(function(){
var $el = $(this);
if ($.inArray($el.data('job_id'), return_data) == -1) {
$el.remove();
}
});
答案 1 :(得分: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