2013-01-11 29 views
-1

我有一张带有一些图片的表格,当Ajax被调用时,它会删除上一张表格并返回另一张带有新图片的表格。
Javascript在Ajax请求后的元素上不执行

$("img").click(function(){ 
    $.post("gallery.php", function(data){ 
     $("#left-gallery, #right-gallery").html("").append(data); 
    }); 
}); 

这是我如何从php文件中获取信息。

问题是,新元素不会触发以前使用的点击事件。

如果我点击表格中的图像,它应该替换表格外部页面上的另一个图像。

$("#left-gallery img").click(function(){ 
    $("#left-gallery td").removeClass("highlighted"); 

    var source = $(this).attr("src"); 
    $("#image1-image").attr("src", source); //replaces a big image outside the table 
    $(this).parents("td").addClass("highlighted"); 
}); 

表图像嵌套,如:

<tr> 
    <td> 
     <a href = "image.jpg"> 
      <img src = "image.jpg"> 
      Image 
     </a> 
    </td> 
</tr> 

即使防止默认行为不起作用。

$("td a").click(function(e){ 
    e.preventDefault(); 
}); 

javascript位于<body>之后,且位于内部。我不知道如何获得点击事件或任何工作在返回的表和任何帮助,将不胜感激。
谢谢。

+4

再次事件委派。 – undefined

+1

@undefined好吧,从现在开始,我们来关闭重复的问题。 –

回答

3

使用授权,因为你动态修改DOM

$('#left-gallery').on('click','img',function(){ 
     // your code here 
}) 

通过这样做,你附加事件处理程序#左画廊元=这是静态的。然后,它会监听来自后代图片点击事件,并处理他们,因为他们泡了

取决于哪个jQuery的版本使用的是

$(“元素”),生活(“事件”,函数({code here。})); // jQuery 1.3+

$('staticparent')。delegate('element','event',function(){code Here ..}); //(jQuery 1.4.3+)

$('staticparent')。on('event','element',function(){code here ..}); // jQuery的1.7+

你在做

$("#left-gallery img").click(function(){ 

结合事件处理程序的图片。该图片,你修改DOM后不再存在..而且你永远的事件处理程序结合新添加的图像,这就是为什么点击没有做任何事情

+0

谢谢,解决了这个问题。不过,我仍然遇到阻止锚标记默认行为的问题。我试过 '$(“td”)。on(“click”,“a”,function(e){'。 – Fee

+0

@Fee只要做你在上面的帖子中做过的事情。 e.preventDefault() –

+0

现在一切正常,现在我明白了,再次感谢 – Fee