一旦页面加载,我就有一个AJAX调用来加载一个函数,该函数打开一个灯箱和一些带有一些数据的框架。问题是,如果我点击关闭(灯箱框架),页面会一次又一次地加载框架,因此在无限循环框架加载时,使用永远不会到达框架层下的页面。 Ajax正在重复调用我猜的函数,但我想加载一次框架,当用户点击X(关闭)时,他可能会返回到原始页面。
$(document).ready(function(){
var city = $('#citycode').html();
$.ajax({
//when page is loaded, fire the following function
success: function(){
//the function to be fired located in the page in seperate file
openX(city + //some other parameters);
}});
});
任何提示?
答案 0 :(得分:4)
您可以在页面顶部设置一个全局变量,并在页面加载后将其设置为true
,然后在代码中检查变量是否false
加载页面不是其他明智的。这是原型:
<script type="text/javascript">
var loaded = false;
$(document).ready(function(){
var city = $('#citycode').html();
$.ajax({
//when page is loaded, fire the following function
success: function(){
if (loaded === false)
{
//the function to be fired located in the page in seperate file
openX(city + //some other parameters);
loaded = true;
}
}});
});
</script>
答案 1 :(得分:1)
jQuery可能会添加一个随机“缓存”参数来禁止缓存。尝试在ajax调用中将cache属性设置为true以允许缓存;您的代码可能如下所示:
$.ajax({
cache: false;
success: function(...){...},
...
});
答案 2 :(得分:1)
我用与其他答案不同的方式解释了你的问题,所以这里......:)
我猜测关闭按钮是一个超链接,并且没有阻止默认操作(更改页面的URL)?
如果这听起来正确,您需要通过捕获链接上的click事件并调用preventDefault()
方法来阻止默认操作。
没有看到你的代码,这是我能给出的最好的例子:
$('div.lightbox').live('click', function (event) {
event.preventDefault();
});
请注意此处使用live()
。