请看下面的代码。
function deferredClick(f) {
return (function (e) {
var $this = $(e.currentTarget);
console.log('Actual target: ', e.currentTarget);
window.setTimeout(function () {
console.log('Target I get here: ', e.currentTarget);
f.call($this.get(0), e);
}, 1000);
});
}
function clickResponder(e) {
var $this = $(e.currentTarget);
$("#out").html('Clicked - ' + $this.val());
}
$('input[type="button"]').on('vclick', deferredClick(clickResponder));
这个想法是在一些固定的延迟后触发事件处理程序。当您运行上述代码时,您将在控制台中获得两个日志。[此处为 JSFiddle 演示 - http://jsfiddle.net/D7GTP/ ]
Actual target: <input class="ui-btn-hidden" type="button" value="click me" data-disabled="false">
Target I get here: Document
怎么会e.currentTarget
从第 4 行突变到第 7 行?
请注意:有问题的事件vclick
是由 jquerymobile 提供的。