每次在jQuery Tabs UI中更改选项卡时,我都会使用下面的函数在#quotescontainer中显示随机引用。除了IE7-8(当然)以外的所有功能都可以正常工作。
IE7-8中发生的情况是显示第一个引号,第二个随机引用出现在第一个引号正下方的#quotescontainer中。在所有其他浏览器中,只显示一个引号,并在选项卡更改时轮换。所以IE从quotes.html抓取div.quote中的第一个引号,显示它并在第一个引号下面显示随机引用。
我可以尝试强制IE正确交换引号吗?并没有被第一次引用“卡住”?
这是缓存问题吗?或者函数的问题总是读取quote1并在其下面附加quote2?
我没有在.htaccess中使用缓存。我尝试在函数中添加$.ajaxSetup({cache: false});
但没有运气。
6/01/11 fix; 问题是quotes.html中<div class="quote">quote text</div>
内的一些html。不知何故,这打破了IE7-8。
jsfiddle: http://jsfiddle.net/YAEe5/28/
我的职能: 在Matthew Ratzloff的帮助下
select: function(event, ui) {
var random = Math.floor(Math.random() * (Math.pow(2, 32) - 1));
$('div#quotescontainer').load('http://mydomain.com/quotes.html?' + random, function() {
var quotes = $(this).find('div.quote');
var index = Math.floor(Math.random() * quotes.length);
quotes.hide().eq(index).fadeIn();
});
在#quotescontainer
的页面上显示引号
quotes.html 包含以下内容:
<div class="quote">Quote1</div>
<div class="quote">Quote2</div>
<div class="quote">Quote3</div>
答案 0 :(得分:8)
这是一个完整的,经过测试的工作示例,说明了您的目标。您应该能够将$(document).ready
函数内的所有内容都放入select
处理程序。
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
</head>
<script>
$(document).ready(function() {
var random = Math.floor(Math.random() * (Math.pow(2, 32) - 1));
$('div#quotescontainer').load('quotes.html?' + random, function() {
var quotes = $(this).find('div.quote');
var index = Math.floor(Math.random() * quotes.length);
quotes.hide().eq(index).fadeIn();
});
});
</script>
<div id="quotescontainer"></div>
</html>
答案 1 :(得分:1)
如果no-cache
或其他缓存选项不起作用,您可以尝试
$('div#quotescontainer').html('')
之后调用你的函数并加载
$('div#quotescontainer').load('http://mydomain.com/quotes.html',function
答案 2 :(得分:0)
在该网址末尾附加一个随机数:http://mydomain.com/quotes.html?rand=439786
它会阻止您的浏览器缓存它。
答案 3 :(得分:0)
这是代码问题,而不是浏览器问题。
您的代码不需要数据缓存。所以,停止使用它。要从代码中执行此操作,只需停止使用HTTP GET命令(由.load()函数使用)。加载你的html,json,脚本或你的网址mydomain.com/quotes.html的任何数据?使用HTTP POST命令发送回全局$ .post()函数。发布数据不会被缓存。您可以在页面的加载事件中执行此操作,方法是将返回的数据分配给全局变量,然后将其发送到div元素。或类似的东西。
或者从您的客户端解决它,打开IE的Internet选项。在浏览历史记录部分(我现在正在使用IE9)单击按钮设置。在对话框中,选择“每次访问页面时”而不是默认“自动”。然后清除浏览器的缓存(Ctrl + Shift + Delete)并重新加载页面。
答案 4 :(得分:0)
每次切换标签时,是否必须从quotes.html加载所有引号?我会在docuemnt ready上加载引号'make all隐藏,只在选项卡上执行选择。示例代码:http://jsfiddle.net/YAEe5/40/
在IE8和compat模式下测试似乎有效。