我已經爲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