我正在将touchSwipe jQuery 插件用于一个小的 WebApp。不幸的是,它不适用于动态添加的元素(例如通过 AJAX)。
好吧,我查看了代码并发现了类似的内容:
$element.bind(START_EV, touchStart);
$element.bind(CANCEL_EV, touchCancel);
如何绑定事件以便它们也可用于动态添加的元素?
我正在将touchSwipe jQuery 插件用于一个小的 WebApp。不幸的是,它不适用于动态添加的元素(例如通过 AJAX)。
好吧,我查看了代码并发现了类似的内容:
$element.bind(START_EV, touchStart);
$element.bind(CANCEL_EV, touchCancel);
如何绑定事件以便它们也可用于动态添加的元素?
使用on
和委托事件:
$(document).on('event', 'element_selector', function(){
// do when event happens
});
但是对于该插件,您可能必须在将事件添加到页面时将它们附加到新对象。
.on
有关用于此场景的更多详细信息,如本文中的示例所示:
$("#boxes").on('mouseover','.box', function() {
$(this).trigger('swiping');
});
$("#boxes").on('swiping','.box', function() {
var $this = $(this);
$this.swipe({
swipe: function(event, direction, distance, duration, fingerCount) {
$this.text("You swiped " + direction );
}
});
在上面的代码片段中,新.box
元素是动态创建的。您创建一个'swiping'
事件并在悬停.box
元素时触发它(包括通过 AJAX 添加的新元素等)。然后第二部分监视'swiping'
事件并附加插件的元素的全部内容。.swipe()
.box