我有一个场景,我有dom元素的实际dom引用,并希望将事件委托给该dom引用。
var domRef = $('.selector');
// I want something like this.
$(document).on('click', domRef, function() {
});
我知道在上面的代码中以这种方式使用它是没有意义的,但我有一个用于我自己需要这种功能的用例。我很感激能为我提供解决方案,而不会就遵循这种做法的原因进行辩论。
答案 0 :(得分:2)
只需手动处理委派:
var domRef = $('.selector');
$(document).on('click', function(e) {
// test if the click target is the same as your domRef
if ($(e.target).is(domRef)) {
// do special stuff for this node
}
});
答案 1 :(得分:1)
来自.on()
的文档。
<强>
.on( events [, selector] [, data], handler(eventObject) )
强>selector:选择器字符串,用于过滤触发事件的所选元素的后代。如果选择器为
null
或省略,则事件始终在到达所选元素时触发。
selector
需要是一个字符串。如果不是那么它被认为是参数data
。您可以确认此by looking at .on()
's source code.
解决方法可能是这样的:
var $domRef = $('.selector');
$(document).on('click', function(evt) {
if($domRef.is(evt.target)) {
...
}
});
尽管表现不太好。