嘿我想在滚动后禁用点击功能,但它不起作用:/
针对此问题的任何解决方案?谢谢!
$(window).scroll(function() {
if ($(this).scrollTop() < 200)
{
$("#treest, #treest2, #treest3").click(function() {anim10();});
}
else
{
$("#treest, #treest2, #treest3").off('click'));
}
});
答案 0 :(得分:3)
你应该使用:
$("#treest, #treest2, #treest3").click(function() {
if ($(window).scrollTop() < 200)
anim10();
});
答案 1 :(得分: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();
});