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_bodydata-attribute 包含一个作业 ID 参考。

.list_body如果作业 id 不包含在数组中,我需要做的是删除特定的div return_data

不确定该.each()函数是否是这里的最佳实践,因为目前它似乎摆脱了一个 div,即使作业 ID 在数组中。

4

2 回答 2

3

首先,找不到时$.inArray返回,因此存在直接的逻辑缺陷。-1其次,this指的是要移除的元素,因此寻找closest具有相同选择器的元素是多余的。试试这个:

$('.list_body').each(function(){
    var $el = $(this);
    if ($.inArray($el.data('job_id'), return_data) == -1) {
        $el.remove();
    }
});
于 2013-07-18T12:20:35.087 回答
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();
    }
});

演示:小提琴

更好的解决方案将是

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

演示:小提琴

于 2013-07-18T12:20:03.160 回答