为什么我的jqRouter.renderViewSuccess事件处理程序被调用了两次?

时间:2018-08-12 20:36:44

标签: javascript jquery event-handling

我在我的应用中使用jq-router,并且该脚本根据当时的路由名称动态加载。由于某种原因,无论我做什么,事件处理程序以及console.log输出都会执行两次。如何阻止这种情况的发生?或者,为什么会这样呢?

function init() {
   $(window).on('jqRouter.renderViewSuccess', function(e, viewRoute, route, params) {
       if(route.name == 'domains.single') {
          console.log(params.domain);
       }
   });
}
init();

1 个答案:

答案 0 :(得分:2)

如果您找不到jqRouter.renderViewSuccess事件触发两次的原因,则可以在第一次调用后删除事件处理程序,以确保仅被调用一次。您可以使用jQuery off函数来做到这一点:

$(window).on('jqRouter.renderViewSuccess', function(e, viewRoute, route, params) {
    if(route.name == 'domains.single') {
        $(window).off('jqRouter.renderViewSuccess');
        console.log(params.domain);
    }
});