下面的例子在firefox和opera中可以很好地工作,但在ie8中不行。但是,如果我在IE8中打开兼容模式,它就会正常工作。为什么?我该怎么修复它呢?
下面的示例显示了toggleClass的用法,但是用addClass和removeClass替换它仍然有相同的问题。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script type="text/javascript" src="/jquery/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/jquery/js/jquery-ui-1.7.2.custom.min.js"></script>
<style type="text/css">
.dostuff{
background-color: green;
}
.undostuff{
background-color: red;
}
</style>
<script language="javascript">
$(document).ready(function(){
$('#DoStuffButton').click(function(){doStuff();});
$('#UndoStuffButton').click(function(){undoStuff();});
function doStuff(){
$('#test').html('Do some stuff');
$('#test').toggleClass('dostuff', 'slow', callback('dostuff'));
}
function undoStuff(){
$('#test').html('Undo some stuff');
$('#test').toggleClass('undostuff', 'slow', callback('undostuff'));
}
function callback(className){
setTimeout(function(){
$('#test').toggleClass(className, 'slow');
}, 1500);
}
});
</script>
</head>
<body>
<div id="test">Blah blah blah</div>
<div>
<button id="DoStuffButton" name="DoStuffButton">Do some stuff</button>
<button id="UndoStuffButton" name="UndoStuffButton">Undo some stuff</button>
</div>
</body>
</html>
编辑:
将javascript更改为以下内容在IE8中也有同样的问题。有什么解释为什么,以及如何使它正确工作?
function doStuff(){
$('#test').html('Do some stuff');
$('#test').addClass('dostuff', 'fast');
setTimeout(function(){$('#test').removeClass('dostuff', 'slow');}, 1000);
}
function undoStuff(){
$('#test').html('Undo some stuff');
$('#test').addClass('undostuff', 100);
setTimeout(function(){$('#test').removeClass('undostuff', 'slow');}, 1000);
}