Jquery 动态创建的图像行不会触发单击事件
我有一点jquery,它向脚本发出ajax请求并返回一些json结果。 然后解析这些结果并创建一个小的图像库。 然后将其添加到我的表单中。 那一点都很好用。。。。 我的问题是,我试图触发一个事件的图像,以便当你点击一个图像,我可以做一些更多的处理。。。。但我就是不能让onclick工作 如果有人有任何建议,我将不胜感激Jquery 动态创建的图像行不会触发单击事件,jquery,Jquery,我有一点jquery,它向脚本发出ajax请求并返回一些json结果。 然后解析这些结果并创建一个小的图像库。 然后将其添加到我的表单中。 那一点都很好用。。。。 我的问题是,我试图触发一个事件的图像,以便当你点击一个图像,我可以做一些更多的处理。。。。但我就是不能让onclick工作 如果有人有任何建议,我将不胜感激 $('.imgSel').click(function() { alert("I WORK!!!!"); }); $("#mydiv").change(funct
$('.imgSel').click(function()
{
alert("I WORK!!!!");
});
$("#mydiv").change(function(){
{
var url = "ajax_pics.php";
$.ajax({
type: "GET",
url: url,
error: function(data){
console.log("could not get get pics");
},
success: function(data){
console.log(data);
var pics = jQuery.parseJSON( data );
$("#imageResultsDiv").remove();
var imageResults ='<label>Image</label><div id="currImg"></div>';
imageResults += "<div style='clear:both'></div><ul>";
imageResults += "<div id='imageResultsDiv'><ul>";
for(var i in pics)
{
imageResults +="<li>";
imageResults +="<img class='imgSel' id='"+pics[i].filename+"' src='"+pics[i].image+"' title='"+pics[i].summary+"'>";
imageResults +="<br/><small>"+pics[i].title+"</small>";
imageResults +="</li>";
}
imageResults +="</ul>";
$('#picsplaceholder').before(imageResults);
}
});
$('.imgSel')。单击(函数()
{
警惕(“我工作!!!!”);
});
$(“#mydiv”).change(function(){
{
var url=“ajax_pics.php”;
$.ajax({
键入:“获取”,
url:url,
错误:函数(数据){
log(“无法获取图片”);
},
成功:功能(数据){
控制台日志(数据);
var pics=jQuery.parseJSON(数据);
$(“#imageResultsDiv”).remove();
var-imageResults='Image';
imageResults+=“”;
imageResults+=“”;
用于(pics中的var i)
{
imageResults+=“- ”;
图像结果+=”;
imageResults+=“
”+图片[i]。标题+”;
imageResults+=“ ”;
}
图像结果+=“
”;
$('picsplaceholder')。在(imageResults)之前;
}
});
})尝试使用实时事件:
如果我没弄错的话,您正在动态地向DOM添加元素 在这种情况下,您不能使用标准的click绑定,因为它们只对DOM中已经存在的元素进行vind 尝试使用,这是自jQuery 1.7以来的首选方法:
$('#mydiv').on("click", ".imgSel", function()
{
alert("I WORK!!!!");
});
您必须使用要绑定到的最接近的静态元素,然后指定要将单击事件应用到的子元素。我认为在您的示例中,$(“#mydiv”)
是最接近的静态元素
如果您碰巧使用了较旧版本的jQuery,请改用它。有关不同绑定方法的更多详细信息,请参阅,它们是在何时添加的,以及谁在何时替换了哪些绑定方法。Francois Wahl是对的。其工作原理是,在最近的静态“父级”上添加事件处理程序因此,当单击事件在其任何子元素上被触发时,它会传播到该父元素并触发事件处理程序
将新元素添加到DOM中时,jQuery无法在其上注册任何事件处理程序。唯一的选择是将事件处理程序附加到父元素上,并让事件向上传播。因此,无论在DOM中添加多少新元素,事件都会在父元素处触发。不要使用live。它已被删除在jQuery 1.7中有许多缺点。它在链接文档中也说明了这一点。因为1.7
on()
是首选方法。如果您不使用jQuery 1.7,请使用delegate
。有关更多详细信息,请参阅本文:@attikatak:非常欢迎您。很高兴您能使用它。