我正在尝试更新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
答案 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);
});