ajax附加导致javascript被多次执行
ajax append causes javascript to be executed multiple times
我在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()
。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 在Safari执行javascript之前对其进行修改
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- 使用Rhino和ASE执行Javascript的区别
- 如何在加载完整页面后严格执行javascript代码
- 在动态加载的对话框中执行Javascript
- 在Sinatra中执行Javascript
- 通过AJAX加载页面并执行javascript和CSS
- 适用于多种浏览器的Selenium-需要能够执行javascript的webDriver
- 如何在seleniumwebdriver中执行javascript提示并等待接受输入
- 在window.open()生成的窗口中执行JavaScript
- AJAX成功回调-执行javascript时出现问题
- 通过指令在控制器中执行javascript函数
- 从React Native Android原生地执行JavaScript代码
- iframe未执行Javascript方法(PHP)
- 执行JavaScript代码,使用selenium webdriver或WatiN从控制台获取日志
- 通过web驱动程序异步执行Javascript
- 如何在长时间执行JavaScript期间显示微调器
- 点击困难时执行javascript函数