Jquery 动态创建的图像';s onclick()不工作

Jquery 动态创建的图像';s onclick()不工作,jquery,Jquery,我试图将文件夹中的所有图像加载到div(id=“wrap”)中,但它的单击功能不起作用。为什么? 下面是我的代码 <script> $(document).ready(function() { var folder = 'images/print/thumb/' post_data = {'folder':folder}; $.post('get_images.php', post_data, function(images

我试图将文件夹中的所有图像加载到div(id=“wrap”)中,但它的单击功能不起作用。为什么?

下面是我的代码

<script>
    $(document).ready(function() {

        var folder = 'images/print/thumb/'
        post_data = {'folder':folder};

        $.post('get_images.php', post_data, function(images){
            for (var i = 0; i < images.length; i++) {

                var tag = '<img class="thumb"  src="' + folder + images[i] + '" />';

                $("#wrap").prepend(tag);
            }

        }, 'json');

        $(".thumb").click(function(){
            alert(this.id);
        });

    });
</script>

<body>
    <div id="wrap" style="padding:20px;">
    </div>
</body>

$(文档).ready(函数(){
var folder='images/print/thumb/'
post_数据={'folder':folder};
$.post('get_images.php',post_数据,函数(images){
对于(var i=0;i

它完美地加载图像。唯一的问题是单击事件。

尝试将事件注册部分放在ajax回调中

 $.post('get_images.php', post_data, function(images) {

       for (var i = 0; i < images.length; i++) {
         var tag = '<img class="thumb"  src="' + folder + images[i] + '" />';
         $("#wrap").prepend(tag);
       }

        $(".thumb").click(function(){
            alert(this.id);
        });   

 }, 'json');

即使答案被接受,我认为它需要一点解释给初学者

jQuery不直接将事件绑定到动态元素。我们需要借助静态祖先元素来跟踪这些事件。这就是它在这里的作用:

$("#wrap").on("click", ".thumb", function(){
    alert(this.id);
});
在人类语言中,当
单击
事件发生在任何拥有
thumb
的孩子身上时,请执行此操作。我见过很多人使用
document
作为父元素。但是最好的做法是使用立即可用的静态父级,否则需要沿着DOM树一直扫描文档以查找发生的元素

甚至可以在插入动态元素时向其添加
onclick
事件

for (var i = 0; i < images.length; i++) {
         var tag = '<img class="thumb" onclick="myFunction()"  src="' + folder + images[i] + '" />';
         $("#wrap").prepend(tag);
       }

希望这对初学者有所帮助。

非常感谢。我知道那份工作。但是,将其与“.on”绑定是完美的。.click有时会失败。
for (var i = 0; i < images.length; i++) {
         var tag = '<img class="thumb" onclick="myFunction()"  src="' + folder + images[i] + '" />';
         $("#wrap").prepend(tag);
       }
function myFunction() {
    // stuff here
}