Php ajax追加会导致多次执行javascript

Php ajax追加会导致多次执行javascript,php,javascript,jquery,ajax,colorbox,Php,Javascript,Jquery,Ajax,Colorbox,我用PHP创建了一个动态表,其中一行中的每个图像在ID中都有一个特定的url 例如: 当用户单击此图像时,它将执行一个操作。这个很好用 之后,在第二个ajax中,应该使用前面的url重新加载colorbox。这也行得通,但是,javascript似乎再次加载(尽管有新的值) $('#cboxLoadedContent img[alt=“markmessage”]”)。live('click',function(){ var returnurl=“”; var markurl=$(this.at

我用PHP创建了一个动态表,其中一行中的每个图像在ID中都有一个特定的url

例如:

当用户单击此图像时,它将执行一个操作。这个很好用

之后,在第二个ajax中,应该使用前面的url重新加载colorbox。这也行得通,但是,javascript似乎再次加载(尽管有新的值)

$('#cboxLoadedContent img[alt=“markmessage”]”)。live('click',function(){
var returnurl=“”;
var markurl=$(this.attr('id');
警报(markurl);
//做动作
$.ajax({
方法:'GET',
url:markurl,
缓存:false
});
//使用以前的contenturl重新加载colorbox。
$.ajax({
键入:“GET”,
url:returnurl,
数据类型:“html”,
是的,
beforeSend:function(){
$('#cboxLoadedContent').empty();
$('cboxLoadingGraphic').show();
},
完成:函数(){
$('#cboxLoadingGraphic').hide();
},
成功:函数(数据){
$('#cboxLoadedContent').empty();
$('#cboxLoadedContent')。追加(数据);
}
});
});
有没有办法防止javascript被重新附加到颜色框中?我尝试了一些方法(比如用DOM删除它),但似乎没有任何效果


javascript可能没有被禁用,它应该在以后处理一个新的url…

我不确定您使用的是哪个版本的jQuery,但是
live()
从1.7开始就被弃用,您可能想尝试使用
on()
尝试将
live
替换为
第一行中的一个

$('cboxLoadedContent img[alt=“markmessage”]”)。一('click',function(){

尝试简单的事件绑定。在这里,您只将其绑定到选定的元素,而不是新的附加元素。如果您希望只触发一次事件,请使用。

您是否在单击链接时阻止默认操作?另外,I
live
已被弃用,请使用
on
代替,也不要使用empty和append您可以使用html来替换内容。我已经按照您的建议编辑了代码,但是问题仍然存在。我为生成的每个图像添加了“markmessage”作为类…
$(文档)。在(“单击”,“img.markmessage”,函数(e){e.preventDefault()
.live
是。使用
.on
一个
.delegate
代替。谢谢!这就是解决方案:
$(文档)。一个(“单击”,“img.markmessage”,function(){
$('#cboxLoadedContent img[alt="markmessage"]').live('click', function(){
var returnurl = "<?php echo $_SESSION['returnpage']; ?>";
var markurl = $(this).attr('id');
alert(markurl);

// Do the action
$.ajax({
    method:'GET',
    url: markurl,
    cache:false
});

// Reload colorbox again with previous contenturl.
$.ajax({
        type: 'GET',
        url: returnurl,
        dataType: 'html',
        cache: true,
        beforeSend: function() {
                $('#cboxLoadedContent').empty();
                $('#cboxLoadingGraphic').show();
        },
        complete: function() {
                $('#cboxLoadingGraphic').hide();
        },
        success: function(data) {              
        $('#cboxLoadedContent').empty(); 
                $('#cboxLoadedContent').append(data);
        }
});
});
</script>