如何从两个嵌套的jquery方法返回值?

时间:2014-03-01 23:51:28

标签: javascript jquery function variables return

我正在尝试更新jquery方法.on()中的全局变量,但我无法弄清楚如何将此更新值返回到全局范围,这将覆盖此全局变量。问题是.on()方法在.each()方法中。因此有两个回调函数可以突破。在我的示例代码下面:

var globalValue = 0;

$('.container').each(function() {
  $(this).on('mousemove', function() {
    globalValue = 1;
    return globalValue;
  });
  return globalValue;
});
console.log(globalValue);  // prints 0

1 个答案:

答案 0 :(得分:0)

您无法从事件处理程序返回类似于您尝试的值。事件处理程序会在以后发生,当它被调用时,它会被系统调用,因此返回一个值只是进入jQuery,然后返回到系统。

您可以从事件处理程序设置全局变量。但即便如此,它通常也不是理想的解决方案。通常,如果从事件处理程序中计算某些内容,则可以在事件处理程序中使用它,也可以调用其他函数并将计算的变量传递给另一个函数。

仅供参考,代码中不需要.each()因为.on()方法会自动应用于$('.container')中的所有DOM元素。你可以这样做:

var globalValue = 0;

$('.container').on('mousemove', function() {
    // set global variable
    globalValue = 1;
});

但这通常更有用:

$('.container').on('mousemove', function() {
    var localValue = 1;
    myfunction(localValue);
});