Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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事件侦听器获取目标元素?_Javascript_Jquery_Events - Fatal编程技术网

Javascript 如何使用jQuery事件侦听器获取目标元素?

Javascript 如何使用jQuery事件侦听器获取目标元素?,javascript,jquery,events,Javascript,Jquery,Events,我有一个事件监听器和一个元素,它在单击时触发一个自定义事件。它们的设置如下: $(document).on('customEventName', function(e) { // do something }); $(document).on('click', '[data-action]', function(e) { e.preventDefault(); $(document).trigger( $(this).attr('action') ); }); 假设我

我有一个事件监听器和一个元素,它在单击时触发一个自定义事件。它们的设置如下:

$(document).on('customEventName', function(e) {
    // do something
});

$(document).on('click', '[data-action]', function(e) {
    e.preventDefault();
    $(document).trigger( $(this).attr('action') );
});

假设我有一个锚定标记(
)触发
单击事件,那么我如何在侦听器中获取该
标记及其属性?我想让对象解析任何附加的
数据-
属性。

您可以将其作为参数传递到触发器:

$(document).on('customEventName', function(e, target) {
    // do something
});

$(document).on('click', '[data-action]', function(e) {
    e.preventDefault();
    $(document).trigger( $(this).attr('action'), [this] );
});
您也可以尝试以下方法:

$(document).on('customEventName', function(e) {
    var target = e.target;
    // do something
});

$(document).on('click', '[data-action]', function(e) {
    e.preventDefault();
    var customEvent = $.Event($(this).data('action'), { target: this });
    $(document).trigger( customEvent );
});

您可以在触发器中将其作为参数传递:

$(document).on('customEventName', function(e, target) {
    // do something
});

$(document).on('click', '[data-action]', function(e) {
    e.preventDefault();
    $(document).trigger( $(this).attr('action'), [this] );
});
您也可以尝试以下方法:

$(document).on('customEventName', function(e) {
    var target = e.target;
    // do something
});

$(document).on('click', '[data-action]', function(e) {
    e.preventDefault();
    var customEvent = $.Event($(this).data('action'), { target: this });
    $(document).trigger( customEvent );
});
解决方案1:
extraParameters
使用
extraparameters
参数作为
trigger
jQuery函数的第二个参数

$(document).on('customEventName', function(e, dataActionElement) {
    // do something
});

$(document).on('click', '[data-action]', function(e) {
    e.preventDefault();
    $(document).trigger($(this).attr('action'), [$(this)]);
});
发件人:

.trigger(事件[,外部参数])
  • 事件

    类型:事件

    一个jQuery.Event对象

  • 外部参数

    类型:数组或纯对象

    要传递给事件处理程序的其他参数


解决方案2:自定义事件 根据,您还可以创建自定义
事件
,您可以在其中设置目标:

类别:
事件
对象 jQuery的事件系统根据W3C标准规范化事件对象。事件对象保证传递给事件处理程序。原始事件中的大多数属性都被复制并规范化为新事件对象

解决方案1:
extraParameters
使用
extraparameters
参数作为
trigger
jQuery函数的第二个参数

$(document).on('customEventName', function(e, dataActionElement) {
    // do something
});

$(document).on('click', '[data-action]', function(e) {
    e.preventDefault();
    $(document).trigger($(this).attr('action'), [$(this)]);
});
发件人:

.trigger(事件[,外部参数])
  • 事件

    类型:事件

    一个jQuery.Event对象

  • 外部参数

    类型:数组或纯对象

    要传递给事件处理程序的其他参数


解决方案2:自定义事件 根据,您还可以创建自定义
事件
,您可以在其中设置目标:

类别:
事件
对象 jQuery的事件系统根据W3C标准规范化事件对象。事件对象保证传递给事件处理程序。原始事件中的大多数属性都被复制并规范化为新事件对象


有点困惑,你似乎已经在使用
这个
,你想把
这个
的实例传递给你的自定义侦听器吗?有点困惑,你似乎已经在使用
这个
,你想把
这个
的实例传递给你的自定义侦听器吗?这就是我想要的,但是我想我可以在
e
参数的
.on('customEventName')
中访问调用者,而不必将调用者对象作为额外参数传递?@MartinBean为什么要这样做?我看不出有什么原因,因为这个解决方案也很简单。它似乎是使用事件监听器的明显方式。“有什么东西触发了一个事件,然后你在你的听者中询问呼叫者?”MartinBean更新了我的答案。添加了内容。@MartinBean现在可以了吗?这有点像我想要的,但是我想我可以在
.on('customEventName')
中的
e
参数中访问调用者,而不必将调用者对象作为一个额外的参数传递?@MartinBean为什么要这样做?我看不出有什么原因,因为这个解决方案也很简单。它似乎是使用事件监听器的明显方式。“有什么东西触发了一个事件,然后你在你的听者中询问呼叫者?”MartinBean更新了我的答案。添加了内容。@MartinBean现在可以了吗?