Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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对象分配给变量不会';I don’我没有按预期工作_Javascript_Jquery - Fatal编程技术网

Javascript 将jquery对象分配给变量不会';I don’我没有按预期工作

Javascript 将jquery对象分配给变量不会';I don’我没有按预期工作,javascript,jquery,Javascript,Jquery,有人能解释为什么这些版本的代码中有一个有效,而另一个失败吗 这不起作用: var classForSelectedElement = "hightlight"; var prevSelect = $(".form-element"); var $selectedElement = $("div").on("click", ".form-element",function(e){ prevSelect.removeClass(classForSelectedElement); $(

有人能解释为什么这些版本的代码中有一个有效,而另一个失败吗

这不起作用:

var classForSelectedElement = "hightlight";
var prevSelect = $(".form-element");
var $selectedElement = $("div").on("click", ".form-element",function(e){
    prevSelect.removeClass(classForSelectedElement);
    $(this).addClass(classForSelectedElement);
});
鉴于此项工作:

var classForSelectedElement = "hightlight";
var $selectedElement = $("div").on("click", ".form-element",function(e){
    $(".form-element").removeClass(classForSelectedElement);
    $(this).addClass(classForSelectedElement);
});

为什么?

假设
.form元素
元素在加载后动态附加到DOM中(由于您使用了委托事件处理程序),那么第一个示例不起作用,因为您试图在页面加载时检索
.form元素
,但它们尚未存在。

为什么使用事件委托?如果你不知道那是什么,你肯定需要了解它(因为你正在使用它)。如果你知道是什么,你基本上已经有了答案。@bibangamba可能会回答你的问题。你完全正确(动态追加)。没有意识到发生了什么。谢谢没问题,很乐意帮忙。