如何使此功能可重新调用?现在,它只在重新加载页面后重新运行。我希望它能一直工作。显然,我没有使用out
权利。
unbind
这是我原来的功能:
<script>
$(document).ready(function() {
$('.viewAll').bind("click.myEvent", function(){
$('.mobileNavBtn, #shopNavTabBtn, #sec0').click();
$(this).unbind("click.myEvent");
$('html, body').animate({
scrollTop: $("#sec0").offset().top
}, 2000);
return false;
});
})
</script>
答案 0 :(得分:0)
$(this).unbind("click.myEvent");
这里你解开了事件监听器。结果是你的事件只触发一次(因为它会在第一次触发后停止侦听。)
在jQuery中实现该功能的更简洁方法是使用jQuery one method附加事件处理程序。
另一方面,如果您在动画未运行时尝试仅侦听元素,则可以附加事件侦听器,并在动画开始时将其删除。动画后重新附加事件。您提供的示例如下所示:
$('.viewAll').on('click', viewAllClick);
function viewAllClick(evt) {
$('.mobileNavBtn, #shopNavTabBtn, #sec0').click();
//detach this event
$('.viewAll').off('click', viewAllClick);
$('body').animate({
scrollTop: $("#sec0").offset().top,
}, {
done: function () {
//reattach the event
$('.viewAll').on('click', viewAllClick);
},
duration: 2000
});
}
我会仔细检查您的动画调用,以确保它正在执行您实际想要的操作。
见plunker for a similar example。单击文本并观察到动画仅在重新附加事件的动画后记录,而每次单击文本时单击都会触发。