Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
jQuery-传递一个.on事件';委托要素';event.data对象的作用域_Jquery_Events_Scope_This - Fatal编程技术网

jQuery-传递一个.on事件';委托要素';event.data对象的作用域

jQuery-传递一个.on事件';委托要素';event.data对象的作用域,jquery,events,scope,this,Jquery,Events,Scope,This,我想将已单击的委派DOM元素传递到事件上的。数据属性 比如说: $('.parent-element').on('click', '.delegated-element', { self: $(this) }, function(e) { console.log(e.data.self); // Logs: // $(document) // I want: // $('.delegated-element') }); 有什么真正的方法可以做到这一点吗 我不担心,但

我想将已单击的委派DOM元素传递到
事件上的
。数据
属性

比如说:

$('.parent-element').on('click', '.delegated-element', { self: $(this) }, function(e) {
  console.log(e.data.self);
  // Logs:
  //   $(document)
  // I want:
  //   $('.delegated-element')
});
有什么真正的方法可以做到这一点吗

我不担心,但我想我会问的


PS:我知道我可以简单地在事件本身中使用$(this),但为了实现我的目标,它将有助于传递范围。

事件处理程序在单击任何内容之前绑定,因此您无法在单击之前获取单击的元素,并将其作为数据传递,这样不行

在事件处理程序内部,您可以使用
event.target
获取已单击的元素,或者使用
this
将事件处理程序绑定到的元素,甚至可以获取委托的目标


简单地说,在事件处理程序被创建为事件数据之前,您只能传入您有权访问的内容。在绑定事件处理程序并有人触发它之前,您不能传入未知的内容。

您是否尝试过e.target?@Dream\u Cap-我正在寻找event.data的作用域。我的问题可以通过其他方式解决,我只是想知道我所要求的是否可能。“在单击任何东西之前,事件处理程序是绑定的”-我可以强制它在单击事件中的某个位置更新吗?如果你可以“更新”,或触发事件或其他什么,这并不重要,在有人实际单击之前,您仍然无法获取已单击的元素。当然,您可以获得与类
.delegated element
匹配的所有元素,但在创建事件处理程序之前,您无法知道是哪一个触发了事件处理程序。我理解。触发事件时将触发单击处理程序。在实例化单击处理程序时,将创建并分配传递给
.on
函数的数据对象。鸡不能先于蛋,基本上。。。哦,太遗憾了。谢谢是的,就是这样。在有人实际单击之前,您不知道单击的元素是什么。