Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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 在委派而不是直接使用.on()时返回单击的元素_Javascript_Jquery - Fatal编程技术网

Javascript 在委派而不是直接使用.on()时返回单击的元素

Javascript 在委派而不是直接使用.on()时返回单击的元素,javascript,jquery,Javascript,Jquery,在委派事件而不是直接分配事件时,是否可以返回单击的元素(例如使用$(this))?在下面的示例中,JS Direct向clicked.test元素的类发出警报,而JS Deleging则向未定义的类发出警报 HTML JS授权-(警报“未定义”) 是的,回调将作为参数接收包含事件目标的事件对象 是的,回调将作为参数接收包含事件目标的事件对象 您只需要获得正确的语法 我不确定当你通过jQuery时,它到底在做什么,$('.test'),但它的最终效果似乎是“完全匹配所有内容”。单击不是按钮的地

在委派事件而不是直接分配事件时,是否可以返回单击的元素(例如使用$(this))?在下面的示例中,JS Direct向clicked.test元素的类发出警报,而JS Deleging则向未定义的类发出警报

HTML

JS授权-(警报“未定义”)


是的,回调将作为参数接收包含事件目标的事件对象


是的,回调将作为参数接收包含事件目标的事件对象


您只需要获得正确的语法

我不确定当你通过jQuery时,它到底在做什么,
$('.test')
,但它的最终效果似乎是“完全匹配所有内容”。单击不是按钮的地方,您仍然会收到警报

上的
的第二个参数应该是包含选择器的字符串,而不是jQuery对象

$(document).on('click', '.test', function() {
…然后,
按预期工作


(传递jQuery对象没有任何意义,因为使用委托选择器的目的是匹配绑定事件处理程序时可能不存在的元素……如果必须在绑定事件之前获取元素并将其包装在jQuery中,则不能这样做!)

您只需获得正确的语法即可

我不确定当你通过jQuery时,它到底在做什么,
$('.test')
,但它的最终效果似乎是“完全匹配所有内容”。单击不是按钮的地方,您仍然会收到警报

上的
的第二个参数应该是包含选择器的字符串,而不是jQuery对象

$(document).on('click', '.test', function() {
…然后,
按预期工作


(传递jQuery对象没有任何意义,因为使用委托选择器的目的是匹配绑定事件处理程序时可能不存在的元素……如果必须在绑定事件之前获取元素并将其包装到jQuery中,则无法这样做!)

event.target
给出实际收到单击的元素,而不是委托选择器匹配的元素。在这个特定的示例中,当单击按钮时,实际上没有什么区别,因为按钮没有任何子元素(例如图像或跨距)。也就是说,您仍然存在一个问题(OP没有提到他们有,大概是因为他们还没有注意到),即单击文档中的任何位置都会触发警报。
event.target
提供实际收到单击的元素,而不是委托选择器匹配的元素。在这个特定的示例中,当单击按钮时,实际上没有什么区别,因为按钮没有任何子元素(例如图像或跨距)。也就是说,你仍然有一个问题(OP没有提到他们有,大概是因为他们还没有注意到),那就是点击文档中的任何地方都会触发警报。是的,这是有效的。是的,我还注意到在文档中的任何地方单击都会调用函数,而我只希望在单击按钮时调用函数。谢谢你,这很有效。是的,我还注意到在文档中的任何地方单击都会调用函数,而我只希望在单击按钮时调用函数。谢谢
$(document).on('click', $('.test'), function() {

    alert($(this).attr('class'));

});
$(document).on('click', $('.test'), function(event) {
    alert($(event.target).attr('class'));

});
$(document).on('click', '.test', function() {