如何重新运行功能?

时间:2015-06-03 20:36:11

标签: jquery jquery-mobile

如何使此功能可重新调用?现在,它只在重新加载页面后重新运行。我希望它能一直工作。显然,我没有使用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>

1 个答案:

答案 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。单击文本并观察到动画仅在重新附加事件的动画后记录,而每次单击文本时单击都会触发。