1

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

例如:

当用户单击此图像时,它会执行一个操作。这工作正常。

之后,在第二个 ajax 中,它应该使用以前的 url 重新加载颜色框。这也有效,但是,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......

4

3 回答 3

2

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

于 2013-08-14T22:46:14.750 回答
1

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

于 2013-08-14T22:51:36.393 回答
0

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

于 2013-08-14T22:46:02.950 回答