在事件处理程序javascript中访问事件对象

在事件处理程序javascript中访问事件对象,javascript,jquery,Javascript,Jquery,我有一个代码片段 $(document).on("click", "div[data-role=button]", myfunc); function myfunc(e){ alert(event.target); alert(e.target); alert(event.currentTarget); alert(e.currentTarget); } 当我点击按钮时,每个按钮都会给出不同的输出 元素 e是object类型 事件的类型为MouseEvent e.curren

我有一个代码片段

$(document).on("click", "div[data-role=button]", myfunc);

function myfunc(e){
  alert(event.target);
  alert(e.target);
  alert(event.currentTarget);
  alert(e.currentTarget);
}
当我点击按钮时,每个按钮都会给出不同的输出 元素

e是object类型

事件的类型为MouseEvent

e.currentTarget似乎给出了正确的答案

我的问题是,如果我决定向我的处理程序添加另一个参数,我将如何访问“e”,该参数给出正确的答案

编辑:

我想做什么

function myfunc(e,str){

}
如何在函数中访问e,以及如何传递这两个参数

编辑2 我发现了另一件有趣的事

this

这个正确地给出了目标,尽管我希望它能让文档知道原因是什么?

如果您以与之前相同的方式访问
e
,我想您的意思是如何在单击事件中设置处理程序。这样怎么样:

$(document).on("click", "div[data-role=button]", function(e) { myfunc(e, "some string"); });
当然,这并不能使“some string”变得非常灵活(除非在事件发生变化时重新绑定事件),因此可以在
myfunc
函数中轻松地修复它

如果您希望它基于某些内容(可能是被单击元素的属性),那么您可能希望:

$(document).on("click", "div[data-role=button]", function(e) { myfunc(e, $(this).data("string")); });
它将获取
数据字符串
属性的值,例如:

<div data-role="button" data-string="my string 1"></div>

您访问
e
的方式与您现在所做的相同,我想您的意思是如何在click事件中设置处理程序。这样怎么样:

$(document).on("click", "div[data-role=button]", function(e) { myfunc(e, "some string"); });
当然,这并不能使“some string”变得非常灵活(除非在事件发生变化时重新绑定事件),因此可以在
myfunc
函数中轻松地修复它

如果您希望它基于某些内容(可能是被单击元素的属性),那么您可能希望:

$(document).on("click", "div[data-role=button]", function(e) { myfunc(e, $(this).data("string")); });
它将获取
数据字符串
属性的值,例如:

<div data-role="button" data-string="my string 1"></div>


内部
myFucnc
e
是一个引用事件对象的局部变量<代码>事件
可能指闭包或全局变量

target
currentTarget
之间的区别如下:

当事件遍历DOM时,标识事件的当前目标。它总是指事件处理程序已附加到的元素,而不是event.target,后者标识事件发生的元素


myFucnc
e
内部,是一个引用事件对象的局部变量<代码>事件
可能指闭包或全局变量

target
currentTarget
之间的区别如下:

当事件遍历DOM时,标识事件的当前目标。它总是指事件处理程序已附加到的元素,而不是event.target,后者标识事件发生的元素


添加另一个参数是什么意思?你的意思是像
myfunc(e,x)
?显然这不是问题。你能展示你的意思的示例代码吗?为什么你要给你的处理程序添加另一个参数?当调用函数以响应事件触发时,它不会得到值。
str
应该是什么?它不会通过单击事件触发传递。我想允许其他人重用该函数,str为自定义事件添加描述如果sombody为自定义事件使用相同的处理程序添加另一个参数是什么意思?你的意思是像
myfunc(e,x)
?显然这不是问题。你能展示你的意思的示例代码吗?为什么你要给你的处理程序添加另一个参数?当调用函数以响应事件触发时,它不会得到值。
str
应该是什么?它不会通过点击事件触发来传递。我想允许其他人重用该函数,如果sombody对自定义事件使用相同的处理程序,str会为自定义事件添加描述。你能解释一下,当我特别点击按钮时,事件发生的元素怎么会是文档吗?那就是:默认情况下,事件将在元素的每个祖先上触发。谢谢,我终于了解了发生的情况。您能否解释一下,当我专门单击按钮时,事件发生的元素如何成为文档?即:默认情况下,事件将在元素的每个祖先上触发。谢谢,我终于明白发生了什么事。