ajax附加导致javascript被多次执行

ajax append causes javascript to be executed multiple times

本文关键字:执行 javascript ajax      更新时间:2023-09-26

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

例如:

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

然后,在第二个ajax中,它应该用以前的url重新加载colorbox。这也起作用,然而,javascript似乎再次加载(尽管有新值)?

$('#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>

有什么方法可以防止javascript被重新附加到颜色框中吗?我尝试了一些方法(比如用DOM删除它),但似乎都不起作用。。。

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

尝试将第一行中的live替换为one$('#cboxLoadedContent img[alt="markmessage"]').one('click', function(){

尝试简单的点击事件绑定。在这里,您只将它绑定到选定的元素,而不绑定到新添加的元素。如果希望事件只激发一次,请使用一次。

我不确定您使用的是哪个版本的jQuery,但live()从1.7开始就不推荐使用,您可能想尝试使用on()