我有一种情况,我需要将 jQuery 的$.fn.one()
函数用于单击事件,但我不希望它应用于事件的下一次发生(就像通常那样),我希望它在之后立即应用于事件,然后解除自身绑定(像.one()
往常一样)。
我不想.one()
应用于第一次出现的原因是因为我正在绑定到document
在冒泡阶段早些时候调用的事件处理程序中,所以第一次到达document
它将是同一事件的一部分。我想知道下一次点击事件何时发生。
注意:我不想使用.stopPropagation()
,因为它可能会破坏我应用程序的其他部分。
这是我想出的两个选项,尽管似乎必须有一个更优雅的解决方案。
双重绑定方法:
$(document).one('click', function() {
$(document).one('click', callback);
});
setTimeout 方法:
setTimeout(function() {
$(document).one('click', callback);
}, 1);
这两种方法都很好,但这是我的问题。我不知道 setTimeout 或频繁事件绑定和解除绑定的性能影响是什么。如果有人知道,我很想听听。但更重要的是,我想要一些关于如何自己衡量这些东西以应对未来这种情况的建议。
我喜欢http://jsperf.com之类的网站,但我不知道它是否真的有助于衡量此类内容。
显然,如果有人看到更好的解决方案,我很乐意听到。