0

我有以下使用 jQuery 和下划线的(缩短的数组):

var all_methods = ['locations', 'items', 'by-cocktails'];
var to_methods = [];
$.each(all_methods, (function (key, val) {
    if ($('.lm-search-options[data-action=' + val + ']').hasClass('del')) {
        console.log('to remove: ' + val); // <- only the last piece is moved out despite multiple pieces being here
        to_methods = _.without(all_methods, val);
    }
}));

我看到的行为是只删除了最后一个选定的 dom 元素(是的,我知道这不会赢得任何软件设计奖)。例如,如果要删除“位置”和“项目”,则仅删除“项目”。我看到的行为是因为这里需要一个新的关闭吗?

4

1 回答 1

1

尝试

var $opts = $('.lm-search-options');
var to_methods = _.filter(all_methods, function(val){
    return !$opts.filter('[data-action=' + val + ']').hasClass('del')
})
于 2013-08-28T05:26:44.087 回答