Jquery 动态创建的图像';s onclick()不工作
我试图将文件夹中的所有图像加载到div(id=“wrap”)中,但它的单击功能不起作用。为什么? 下面是我的代码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
<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
}