2014-01-15 82 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:我没有看到任何问题实现上述方法 –