2014-03-01 49 views
0

我試圖更新jQuery方法.on()內部的全局變量,但我無法弄清楚如何將這個更新的值返回到全局範圍,它將覆蓋這個全局變量。問題是.on()方法在.each()方法內。所以有兩個回調函數可以打破。在我的示例代碼下方:如何從兩個嵌套的jquery方法返回值?

var globalValue = 0; 

$('.container').each(function() { 
    $(this).on('mousemove', function() { 
    globalValue = 1; 
    return globalValue; 
    }); 
    return globalValue; 
}); 
console.log(globalValue); // prints 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); 
}); 
+0

謝謝你的建議。我設法解決了我的問題。 – mirox