嵌套的eventlistener如何在第一次调用时绑定

时间:2018-06-12 16:24:46

标签: javascript jquery

我正在尝试将事件绑定到异步加载的类选择器。我正在使用jQuery .on事件监听器,因此它将异步工作。

然而,因为我在eventlistener中绑定另一个事件。这意味着我必须触发事件两次以使函数运行。

button.on("touchend", tapHandler);

function tapHandler() 
  button.swipe( {
    //Generic swipe handler for all directions
    tap:function() {
        banner.toggleClass("alt")
    }
  });
});

有没有办法在第一次调用时立即调用嵌套的eventlistener?

这个jsfiddle清楚地显示了这个问题。使用触摸设备时,必须按两次按钮才能调用toggleClass。 jsfiddle (use touch device in dev-tools)

1 个答案:

答案 0 :(得分:1)

  

有没有办法在第一次调用时立即调用嵌套的eventlistener?

如果你的意思是“...在添加它时”而不是“......在第一次调用时”,那么是的,至少有两种方法:

  1. 定义一个命名函数,在处理程序中使用它,并直接调用它:

    function tapHandler()  {
      function swipeHandler() {
        banner.toggleClass("alt")
      }
      button.swipe( {
        //Generic swipe handler for all directions
        tap: swipeHandler
      });
      swipeHandler();
    });
    

    只调用swipeHandler一次并且不传递事件对象;看看它做了什么,这看起来很好。更彻底的版本可能会遍历button(因为jQuery对象是集合)。

  2. 使用triggertriggerHandler

    function tapHandler()  {
      button.swipe( {
        //Generic swipe handler for all directions
        tap: function() {
            banner.toggleClass("alt")
        }
      });
      button.triggerHandler("tap");
    });