Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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 使用新添加的类触发函数_Javascript_Jquery - Fatal编程技术网

Javascript 使用新添加的类触发函数

Javascript 使用新添加的类触发函数,javascript,jquery,Javascript,Jquery,我试着简化它,简单到让我的问题更清楚。 即使在执行addClass之后,也没有弹出“我是个男孩”的警报。 这是我的密码: $(“.first”)。单击(函数(){ var a=$(this.html(); 如果(a=='On'){ $(this.removeClass('first').unbind().addClass('second'); $(this.html('Off'); } }); $(“.second”)。单击(函数(){ 警惕(“我是个男孩”); }); On传递给$的函数。p

我试着简化它,简单到让我的问题更清楚。 即使在执行addClass之后,也没有弹出“我是个男孩”的警报。 这是我的密码:

$(“.first”)。单击(函数(){
var a=$(this.html();
如果(a=='On'){
$(this.removeClass('first').unbind().addClass('second');
$(this.html('Off');
}
});
$(“.second”)。单击(函数(){
警惕(“我是个男孩”);
});

On
传递给
$的函数。post
直到稍后才会运行(回调)。因此,在您尝试选择该类之后,将添加该类。在回调中执行此操作,方法与添加类的方法相同(您不需要选择该类,只需使用
$this

此行为是因为您在加载DOM后将类应用于元素,换句话说,是动态的。因此,附加到“.second”控件的事件侦听器不知道新添加的类,并且在单击该控件时不会激发

要解决此问题,只需将事件侦听器应用于父DOM对象,通常为$(document)或$('body'),这将确保它知道任何动态添加类的子对象

正如乔治·贝利(George Bailey)所说,你可以参考一个深入的解释

对于您的特定代码,修复方法是简单地将其调整为:

$(“.first”)。单击(函数(){
var a=$(this.html();
如果(a=='On'){
$(this.removeClass('first').unbind().addClass('second');
$(this.html('Off');
}
});
/*更改为:
$(“.second”)。单击(函数(){
警惕(“我是个男孩”);
});
*/
//为此:
$(文档).on('click','second',函数(){
console.log(“我是个男孩”);
});


可能重复的问题上,您是说新添加的
还是带有特定类的
元素
,您应该同时添加相关的
HTML
。也添加相关的HTML@不是评论,只是修改你原来的问题。同时整理代码缩进,甚至更好地将代码片段转换为可用代码。你能为用户提供的帮助越多,你就越有可能得到一个好的答案。我不太理解你的答案,但为了简单起见,我编辑了这个问题。你能帮我查一下吗?哦…现在,我更明白了,我会通过链接了解更多,非常感谢你的贡献,这是一个成功。