Javascript Jquery集合/domRef上的Jquery委派,但选择器字符串
我有一个场景,其中我有对dom元素的实际dom引用,并希望将事件委托给该dom引用Javascript Jquery集合/domRef上的Jquery委派,但选择器字符串,javascript,jquery,Javascript,Jquery,我有一个场景,其中我有对dom元素的实际dom引用,并希望将事件委托给该dom引用 var domRef = $('.selector'); // I want something like this. $(document).on('click', domRef, function() { }); 我知道在上面的代码中以这种方式使用它是没有意义的,但是我自己有一个用例,我想要这样的功能。如果您能为我提供解决方案,我将不胜感激,无需就遵循此类做法的原因进行辩论 只需手动处理委派: var d
var domRef = $('.selector');
// I want something like this.
$(document).on('click', domRef, function() {
});
我知道在上面的代码中以这种方式使用它是没有意义的,但是我自己有一个用例,我想要这样的功能。如果您能为我提供解决方案,我将不胜感激,无需就遵循此类做法的原因进行辩论 只需手动处理委派:
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
}
});
只需手动处理委托:
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
}
});
从的文档中
.on(事件[,选择器][,数据],处理程序(事件对象))
选择器:选择器字符串,用于筛选触发事件的选定元素的后代。如果选择器为null
或省略,则事件始终在到达所选元素时触发
选择器必须是字符串。如果不是,则将其视为参数数据
。你可以证实这一点
解决方法可能是执行以下操作:
var $domRef = $('.selector');
尽管如此,就性能而言,它并不那么好。来自的文档
.on(事件[,选择器][,数据],处理程序(事件对象))
选择器:选择器字符串,用于筛选触发事件的选定元素的后代。如果选择器为null
或省略,则事件始终在到达所选元素时触发
选择器必须是字符串。如果不是,则将其视为参数数据
。你可以证实这一点
解决方法可能是执行以下操作:
var $domRef = $('.selector');
尽管如此,就性能而言,它并不太好。而且……这不起作用吗?出了什么问题?当你说“dom引用”时,你是指jQuery集合还是实际的dom节点?(您的代码建议使用前者。)如果我在domRef之外单击,它将触发回调。domRef是一个对象,而不是选择器字符串。@PablognonzálezAlba为什么要尝试委托给同一个对象?@EmphanticSunshine我明白了,我混淆了()上的
函数性。而且……这不起作用?出了什么问题?当你说“dom引用”时,你是指jQuery集合还是实际的dom节点?(您的代码建议使用前者。)如果我在domRef之外单击,它将触发回调。domRef是一个对象,而不是选择器字符串。@PablognonzálezAlba为什么要尝试委托给同一个对象?@我明白了,我混淆了()上的
函数性。委托给文档
会对性能造成严重影响,因此,我不会对微观优化这团乱麻感到太激动。委托给文档对性能来说是一个可怕的问题,因此我不会对微观优化这团乱麻感到太激动。谢谢。这非常接近,但存在性能问题。因此,我想我会在选项中发送一个选择器。这与我的答案完全相同,并且是稍后才给出的。为什么这被接受了?不幸的是,对我来说,你发得更快了,但解释得不好。我想这个解释对这次行动产生了影响。不管怎样,他是唯一一个这样做的人knows@Mathletics,我想亚历山大是第一个回答的,因为他的回答显示在你的回答之前,我只能将1个回答标记为正确。Alexander还发布了说明他做了更多工作的文档。@EmphanticSunshine,如果您有机会修改domRef
。您可以将选择器存储在$('.selector').data('selector','.selector')
中,以便以后使用它。但是,我的答案是你不能那样做,谢谢。这非常接近,但存在性能问题。因此,我想我会在选项中发送一个选择器。这与我的答案完全相同,并且是稍后才给出的。为什么这被接受了?不幸的是,对我来说,你发得更快了,但解释得不好。我想这个解释对这次行动产生了影响。不管怎样,他是唯一一个这样做的人knows@Mathletics,我想亚历山大是第一个回答的,因为他的回答显示在你的回答之前,我只能将1个回答标记为正确。Alexander还发布了说明他做了更多工作的文档。@EmphanticSunshine,如果您有机会修改domRef
。您可以将选择器存储在$('.selector').data('selector','.selector')
中,以便以后使用它。但是,我的答案是你不能那样做