下划线返回值的每个方法

时间:2011-10-14 18:14:22

标签: jquery underscore.js

这是我正在尝试做的一个简单的例子。我正在尝试让我的包装函数myElements返回来自下划线每个迭代器的元素。我可以在_.each函数中找出els的值,但是当我从buttonClickListener调用时,如何让我的函数返回这些值?

buttonClickListenr: function(event){

    if ( $(event.target).is( myElements() )) return;
    ..// otherwise move on in my event phase

}

myElements: function(){
    var filter=['a','b'];
    _.each(filter, function(el){ 
        return el
    });
}

2 个答案:

答案 0 :(得分:1)

each函数将为每个元素调用一次回调,而不是按预期对返回值进行分组。相反,您需要将它们存储在each方法完成后持续存在的结构中

尝试以下

getNums: function(){
  var filter=['20','2'];
  var result = [];
  _.each(filter, function(num){ 
    result.push(num);
  });
  return result;
}

修改

OP澄清他们只是想看看event.target是否在数组中。在这种情况下,您只想使用indexOf方法。例如

getNums: function() {
  return ['20', '2'];
},

buttonClickListener: function(event){
  if (this.getNums().indexOf(event.target) >= 0) {
    // It's present
  }
}

答案 1 :(得分:0)

你想要做的事情并没有多大意义。 'include'运算符可能对您更有用:

if ( _(filter).include($(event.target)) ){ return; }