2013-07-05 301 views
1

我需要在「綁定鼠標滾輪」功能中傳遞一個變量,並在用戶點擊鏈接時觸發該功能。jQuery綁定鼠標滾輪

我只是不知道如何做到這一點,因爲我不能把一個綁定到事件處理程序中。它只是不起作用。

這是我嘗試:

$('.link').click(function(e) 
{ 
    e.preventDefault(); 

    var nbr=$(this).data('article_nbr'); 

    $("#overlay").bind("mousewheel", function (event,delta,nbr) 
    { 
     ... 
     scrollTop = $("#article"+nbr).scrollTop(); 
     scrollTopNew = scrollTop - (delta * 30); 
     ... 
    } 
}); 

我能想象這是完全錯誤的,但我不能找出正確的方式來獲得我所需要的。

到目前爲止,我只能在文檔準備就緒時使用bind,但在這裏它應該根據某些事件或事件結果被解僱。

+1

也許你可以描述你想達到的效果。從你發佈的內容來看,我看不出這應該如何表現。 – 2013-07-05 00:43:44

+0

好的:我在沒有溢出的網站上刷新頁面時,在疊加層上顯示文章(一個接一個)。所以我需要在覆蓋層上創建自己的滾動系統,並考慮根據當前文章的長度計算的高度。所以,當用戶點擊一個鏈接時,我會得到定義文章div的文章編號。現在,我嘗試在綁定中使用這些數據,但沒有成功,因爲1)我不知道如何在事件發生時觸發綁定,2)我不知道如何傳遞從該事件中獲得的變量在「綁定」中使用它。感謝您的幫助 – Baylock

回答

2

你需要外界定義三角洲和NBR爲全局變量,然後你可以在裏面使用它。

var delta = 10; 
var nbr = 'some_value'; 

$('.link').click(function(e) 
{ 
    e.preventDefault(); 

    var nbr=$(this).data('article_nbr'); 

    $("#overlay").bind("mousewheel", function (event,delta,nbr) 
    { 
     ... 
     scrollTop = $("#article"+article_nbr).scrollTop(); 
     scrollTopNew = scrollTop - (delta * 30); 
     ... 
    } 
}); 
+0

謝謝。正是我需要的。我一直認爲,只要我通過一個函數傳遞一個變量作爲參數,我就很好。沒想到讓它成爲全球性的,因爲我相信它沒有任何區別。顯然,它的確如此。很明顯,我沒有把它全部弄清楚,但我最終會。謝謝。 – Baylock

+0

WAAAAAAAAT你爲什麼要宣佈爲全球? – FlavorScape

+0

我得到了這個* [Violation]添加了非被動事件監聽器到一個滾動阻塞'mousewheel'事件。考慮將事件處理程序標記爲「被動」,以使頁面更具響應性* – Elshan

0

,如果我得到你想要做什麼,滾動()將做的工作

http://api.jquery.com/scroll/

$("#overlay").scroll(function(){ 
    // scroll happened ! 
}); 
+0

問題依然存在,因爲我無法將其放入點擊處理程序 – Baylock

+1

「1)我不知道如何在事件發生時觸發綁定,」 滾動回答? 「 」2)我不知道如何傳遞我從該事件中獲得的變量以在「綁定」中使用它。感謝您的幫助「 使用全局變量作爲@Polakete提到 – isThisLove

+0

是的,這是問題所在。謝謝 – Baylock