2016-09-17 71 views
0

我有一些變量,全局聲明:如何在jQuery/Javascript中觸發'resize'事件時更新'scroll'事件中使用的全局變量?

var a = $('.ela'); 
var b = $('.elb'); 
var top_a = $('.ela').offset().top; 
var top_b = $('.elb').offset().top; 

我用這些變量「滾動」事件應用於<main>元素:

$('main').on('scroll', function(top_a, top_b) { 
// do something with top_a and top_b 
} 

現在,我需要使用這些變量的更新值在事件$(窗口).resize(),所以我寫:

$(window).resize(function() { 
    top_a = $('.ela').offset().top; 
    top_b = $('.elb').offset().top; 
}) 

這樣的全局變量被更新,但在$( '主')上。 ('滾動',功能等)我得到舊值...

我在哪裏做錯了?

回答

3

你是不是傳遞變量scroll事件在

$('main').on('scroll', function(top_a, top_b) { 
// do something with top_a and top_b 
}) 

top_a將引用event對象,而不是top_a變量。

您可以直接引用變量

$('main').on('scroll', function(event) { 
    // do something with top_a and top_b 
    console.log(top_a, top_b) 
}); 
+0

感謝@ guest271314,你的回答後,我在題目做小的搜索使用event.data

$('main').on('scroll', {top_a:top_a, top_b:top_b}, function(event) { // do something with top_a and top_b console.log(event.data.top_a, event.data.top_b) }); 

傳遞變量或者,現在我如何更好地理解將參數傳遞給事件處理函數我想知道只有在這種情況下封閉才能成爲解決方案,例如: '$('main')。on('scroll',myFunction(top_a,top_b){ //對top_a和top_b做些事情 } )' 和: '函數myFunction的(top_a,top_b){ 復位功能(){ //做top_a和top_b東西 } }' – AmintaCode

相關問題