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现在可以了吗?