Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery集合/domRef上的Jquery委派,但选择器字符串_Javascript_Jquery - Fatal编程技术网

Javascript Jquery集合/domRef上的Jquery委派,但选择器字符串

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

我有一个场景,其中我有对dom元素的实际dom引用,并希望将事件委托给该dom引用

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')
中,以便以后使用它。但是,我的答案是你不能那样做