我正在尝试将事件绑定到异步加载的类选择器。我正在使用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)
答案 0 :(得分:1)
有没有办法在第一次调用时立即调用嵌套的eventlistener?
如果你的意思是“...在添加它时”而不是“......在第一次调用时”,那么是的,至少有两种方法:
定义一个命名函数,在处理程序中使用它,并直接调用它:
function tapHandler() {
function swipeHandler() {
banner.toggleClass("alt")
}
button.swipe( {
//Generic swipe handler for all directions
tap: swipeHandler
});
swipeHandler();
});
只调用swipeHandler
一次并且不传递事件对象;看看它做了什么,这看起来很好。更彻底的版本可能会遍历button
(因为jQuery对象是集合)。
function tapHandler() {
button.swipe( {
//Generic swipe handler for all directions
tap: function() {
banner.toggleClass("alt")
}
});
button.triggerHandler("tap");
});