Javascript 在jQuery中创建新元素的问题

Javascript 在jQuery中创建新元素的问题,javascript,jquery,html,addclass,appendto,Javascript,Jquery,Html,Addclass,Appendto,我对jQuery还相当陌生,正在尝试理解我刚刚编写的一些代码 我有一个简单的HTML <body> <div id="theDiv"> <button>This is the div</button> </div> </body> 我希望你们中的一些jQuery大师能够向我解释到底发生了什么,因为我自己还不太了解 这是我一直在用的小提琴 干杯。带有class.mySelects的在单击按钮之

我对jQuery还相当陌生,正在尝试理解我刚刚编写的一些代码

我有一个简单的HTML

<body>
    <div id="theDiv">
        <button>This is the div</button>
    </div>
</body>
我希望你们中的一些jQuery大师能够向我解释到底发生了什么,因为我自己还不太了解

这是我一直在用的小提琴


干杯。

带有class
.mySelects的
在单击按钮之前不存在。

正如一些人在设置onclick事件时所说,您想要事件的元素还不存在。您需要像这样使用jQuery委托


$(“body”)。在(“click”、“.mySelects”,function(){…})上

以下是添加选择选项的两个备选方案。第一个是代表,就像乔治建议的:

   $("body").delegate(".mySelects", "click",function(){
        console.log("Just added the class");
        $('<option value="Text">Text</option>').appendTo(".mySelects")
    });


    $(document).on("click", ".mySelects",function(){
        console.log("Just added the class");
        $('<option value="Text">Text</option>').appendTo(".mySelects")
    });
$(“body”).delegate(.mySelects”,“click”,function(){
log(“刚刚添加了类”);
$('Text').appendTo(“.mySelects”)
});
$(document).on(“click”,“.mySelects”,function()){
log(“刚刚添加了类”);
$('Text').appendTo(“.mySelects”)
});

由于DOM load上无法使用
.mySelects
,您需要委派
单击事件。感谢您的回答,我一直在努力完全掌握委派的概念。仅供参考,如果有人在这里偶然发现,jQuery API文档建议在较新版本上使用
.on
,因此如果您使用的是最新的jQuery库,第二个示例将更合适。
$(document).ready(function(){
    $("button").on("click",function(){
        $("<div></div>").attr("id","myDiv").appendTo("#theDiv");
        $("<select></select>").addClass("mySelects").appendTo("#myDiv");
        $(".mySelects").on("click",function(){
            console.log("Just added the class");
            $('<option value="Text">Text</option>').appendTo(".mySelects")
        });
    });
});
   $("body").delegate(".mySelects", "click",function(){
        console.log("Just added the class");
        $('<option value="Text">Text</option>').appendTo(".mySelects")
    });


    $(document).on("click", ".mySelects",function(){
        console.log("Just added the class");
        $('<option value="Text">Text</option>').appendTo(".mySelects")
    });