检查所有元素与数组JQuery中的值

时间:2013-07-18 12:13:26

标签: jquery each

$('.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在数组中。

2 个答案:

答案 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