Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ajax请求后Javascript未在元素上执行_Javascript_Ajax_Jquery - Fatal编程技术网

ajax请求后Javascript未在元素上执行

ajax请求后Javascript未在元素上执行,javascript,ajax,jquery,Javascript,Ajax,Jquery,我有一个包含一些图像的表,当调用Ajax时,它会删除上一个表并返回另一个包含新图像的表。 $("img").click(function(){ $.post("gallery.php", function(data){ $("#left-gallery, #right-gallery").html("").append(data); }); }); 这就是我从php文件中获取信息的方式 问题是新元素不会触发以前元素用来触发的单击事件。 如果单击表中的某个图像,

我有一个包含一些图像的表,当调用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>
javascript位于
之后,是内部的。我不知道如何使单击事件或任何事件在返回的表上工作,如有任何帮助,将不胜感激。

谢谢。

使用委派,因为您正在动态修改DOM

$('#left-gallery').on('click','img',function(){
        // your code here
})
通过这样做,可以将事件处理程序附加到#left gallery element=上,该元素是静态的。然后,它将侦听子代图像中的单击事件,并在它们冒泡时进行处理

取决于您使用的jQuery版本

$('element').live('event',function({code here..}));//jQuery 1.3+

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

$('staticparent')。在('event','element',function(){code here..})上;//jquery1.7+

你在干什么

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

它将事件处理程序绑定到图像。。修改dom后,图像不再存在。。而且您从未将事件处理程序绑定到新添加的图像,因此单击没有任何作用

谢谢,这解决了问题。但是,我仍然无法阻止锚标记的默认行为。我尝试了
$(“td”)。在(“单击”,“a”,函数(e){
@Fee)上,只需按照您在上面的帖子中所做的做..传入事件或e并执行e.preventDefault()现在一切都正常了。我现在理解委派,谢谢again@Fee欢迎……很高兴这有助于您理解代表团:)+1(事实上我们应该关闭副本…但是…记住这一点)啊,谢谢你的支持point@undefined好的,伙计们,从现在开始,让我们结束重复的问题。
$("#left-gallery img").click(function(){