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()現在、ジョブ ID が配列内にあるにもかかわらず、div を削除しているように見えるため、関数がここでのベスト プラクティスであるかどうかはわかりません。

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 に答える