我已经为jQuery编写了一系列插件,它们实际上充当移动浏览器的事件。你可以在这里看到它们>http://ben-major.co.uk/2011/11/jquery-mobile-events/。在jQuery中触发用于live的自定义事件()
目前,他们被称为$(ele).tap(handler)
等等,但我想添加功能来引发自定义事件,以便可以使用像$(ele).on('tap', handler);
这样的东西来利用函数。
我使用下面的代码的权利,但这似乎并没有工作:
$(function() {
$('*').tapstart(function() { $(this).trigger('tapstart'); })
.tapend(function() { $(this).trigger('tapend'); })
.tap(function() { $(this).trigger('tap'); })
.doubletap(function() { $(this).trigger('doubletap'); })
.taphold(function() { $(this).trigger('taphold'); })
.swipedown(function() { $(this).trigger('swipedown'); })
.swipeup(function() { $(this).trigger('swipeup'); })
.swipeleft(function() { $(this).trigger('swipeleft'); })
.swiperight(function() { $(this).trigger('swiperight'); });
});
这里有一个jsFiddle来证明我的问题。很明显,点击第二个div
应该模仿第一个的动作,但是因为在解析上面给出的绑定之后它被添加到DOM,所以它不会。
我想我的问题是:什么是实现我想要的最好方法?有没有办法选择DOM中现在和将来存在的所有元素(如果可能,我宁愿不使用类似livequery或外部插件的东西)。
我结束了重写基于一些对你评论的事件库。你是对的 - 使用jQuery'*'选择器对于移动设备来说是一个不好的判断。 – BenM