Php ajax追加会导致多次执行javascript
我用PHP创建了一个动态表,其中一行中的每个图像在ID中都有一个特定的url 例如: 当用户单击此图像时,它将执行一个操作。这个很好用 之后,在第二个ajax中,应该使用前面的url重新加载colorbox。这也行得通,但是,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
$('#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(){
尝试简单的事件绑定。在这里,您只将其绑定到选定的元素,而不是新的附加元素。如果您希望只触发一次事件,请使用。您是否在单击链接时阻止默认操作?另外,Ilive
已被弃用,请使用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>