刚接触jQuery(但不是vanilla JS)我完全不知道为什么以下悬停效果在FF,Chrome,Safari中有效,但在IE中却不行!我从Carl Meyer的帖子here中得到了这个剧本;仅更改对象ID以匹配我的标记。
您可以找到此页here的有效示例,但这里是代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>test</title>
<script type="text/javascript" language="JavaScript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" language="JavaScript">
$(document).ready(function() {
toolButtons = $('#toolButtons > li');
insideCenter = $('#insideCenter > div');
toolButtons.each(function(idx) {
$(this).data('slide', insideCenter.eq(idx));
}).hover(
function() {
toolButtons.removeClass('active');
insideCenter.removeClass('active');
$(this).addClass('active');
$(this).data('slide').addClass('active');
});
});
</script>
<style type="text/css">
#toolButtons .active { font-weight: bold; }
#insideCenter div { display: none; }
#insideCenter div.active { display: block; }
</style>
</head>
<body>
<ul id="toolButtons">
<li class="active">First slide</li>
<li>Second slide</li>
<li>Third slide</li>
<li>Fourth slide</li>
</ul>
<div id="insideCenter">
<div id="slide1" class="active">Well well.</div>
<div id="slide2">Oh no!</div>
<div id="slide3">You again?</div>
<div id="slide4">I'm gone!</div>
</div>
</body>
</html>
非常感谢任何帮助!
维尼
答案 0 :(得分:2)
致电var toolButtons = $('#toolButtons > li');
和var insideCenter = $('#insideCenter > div');
。
您删除了var
,但无法看到它正在尝试设置全局变量。尽可能使用var
,尤其是在变量不是全局的情况下。
$(document).ready(function() {
$('#toolButtons > li').each(function(idx) {
$(this).data('slide', $('#insideCenter > div').eq(idx));
}).hover(
function() {
$('#toolButtons > li').removeClass('active');
$('#insideCenter > div').removeClass('active');
$(this).addClass('active');
$(this).data('slide').addClass('active');
});
});
答案 1 :(得分:0)
我认为你的互联网探索如何处理javascript存在问题,看来它不喜欢你的变种,我确信聪明的人能够解释互联网资源管理器和其他浏览器之间的差异。这个背景。
一种解决方案是全局定义它们:
<script type="text/javascript" language="JavaScript">
var toolButtons;
var insideCenter;
$(document).ready(function() {
toolButtons = $('#toolButtons > li');
insideCenter = $('#insideCenter > div');
toolButtons.each(function(idx) {
$(this).data('slide', insideCenter.eq(idx));
}).hover(
function() {
toolButtons.removeClass('active');
insideCenter.removeClass('active');
$(this).addClass('active');
$(this).data('slide').addClass('active');
});
});
</script>
答案 2 :(得分:0)
<li>
上时运行
function onHover(){
change the css values for different IDs
}
然后为每个列表项做
<li onmouseover="onHover();">blah</li>
您可能需要多个功能(每个功能一个), 但这取决于你如何编写你的功能。