2016-08-24 26 views
0

我想隱藏狀態不存在於過濾數組中的所有元素,並想知道最高性能的方法是達到這個目的的嗎?現在我過濾元素,檢查狀態,檢查過濾器數組中是否不存在,然後應用隱藏類。有一個更好的方法嗎?隱藏狀態不是可過濾數組的一部分的所有元素?

JS

var filtersArray = ['working', 'rejected'], 
     orders = $('.js-orders').children(); 

var filtered = orders.filter(function(index, element) { 
    var status = $(element).data('status').toLowerCase(), 
     hiddenFilter = !_.contains(filtersArray, status); 

    return hiddenFilter; 
}); 

filtered.addClass('is-hidden'); 

JS小提琴https://jsfiddle.net/kyllle/xwobhnzr/

回答

1

濾波函數內的測試是:

$(function() { 
 
    var filtersArray = ['working', 'rejected'], 
 
     orders = $('.js-orders').children(); 
 

 
    var filtered = orders.filter(function(index, element) { 
 
    return filtersArray.indexOf($(element).data('status').toLowerCase()) != -1 
 
    }); 
 

 
    filtered.addClass('is-hidden'); 
 
});
.is-hidden { 
 
    display: none; 
 
}
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script> 
 

 
<ul class="js-orders"> 
 
    <li data-status="working">Item 1 - Working</li> 
 
    <li data-status="pending">Item 2 - Pending</li> 
 
    <li data-status="working">Item 3 - Working</li> 
 
    <li data-status="pending">Item 4 - Pending</li> 
 
    <li data-status="working">Item 5 - Working</li> 
 
    <li data-status="pending">Item 6 - Pending</li> 
 
    <li data-status="rejected">Item 7 - Rejected</li> 
 
    <li data-status="rejected">Item 8 - Rejected</li> 
 
</ul>

相關問題