2014-01-15 116 views
0

嘿,我想禁用滾動後的點擊功能,但它不工作:/禁用滾動的點擊功能

這個問題的任何解決方案?謝謝!

$(window).scroll(function() { 
    if ($(this).scrollTop() < 200) 
    { 
     $("#treest, #treest2, #treest3").click(function() {anim10();}); 
    } 
    else 
    {  
     $("#treest, #treest2, #treest3").off('click')); 
    } 
}); 
+0

'語法錯誤:意外的令牌)' – Musa

+1

你每次連接幾十個點擊的事件監聽器滾動你的窗口。 – user1853181

回答

1

你每次滾動的窗口,這就是爲什麼你的例子不工作時安裝新的單擊事件偵聽器。

相反,嘗試這樣的:

var $collection = $("#treest").add("#treest2").add("$treest3"); 
$(window).scroll(function() { 
    if ($(this).scrollTop() > 200) { 
     // Removes click event listener 
     $collection.off('click')); 
    } 
    else { 
     // Check if a click event listener is attached, and if not, attaches a new one 
     if(!$collection.data('events').click.length) { 
      $collection.click(function() { 
       anim10(); 
      }); 
     } 
    } 
}); 

此外,而不是執行數十個函數調用每次滾動的窗口和安裝時間/拆卸點擊事件監聽器,它是更好的性能明智的離開點擊監聽器那裏,只是驗證它在每次調用(如@Milind在他的回答曾建議):

var $collection = $("#treest").add("#treest2").add("$treest3"); 
$collection.click(function() { 
    if ($(window).scrollTop() <= 200) 
     anim10(); 
    }); 
3

你還是使用:

$("#treest, #treest2, #treest3").click(function() { 
if ($(window).scrollTop() < 200) 
anim10(); 
}); 
+0

不,因爲我有一個ajax頁面,並希望200後禁用點擊功能,這就是問題 – user3191542

+0

@ user3191542:我沒有看到任何問題實現上述方法 –