我正在使用这个来自here,的div fadeTo代码,它会消除两个div中的一个,具体取决于悬停。
我想做的是以这种方式添加第三个选项 - 第三个div叫做#maindiv:“如果将鼠标悬停在#maindiv上,请不要淡化#sidebar或#primarycontainter,但是如果将鼠标悬停在#sidebar或#primarycontainter,然后淡出其中任何一个(取决于悬停),但不要淡化#maindiv。“
如何保持现有的else语句使IE6不使用任何代码?感谢....
编辑2/3/10:由于三个div,是否有不同的处理方法?是否需要回调,或者某种方式刷新函数,因为下面的代码导致fadeTo动作不一致?
$(document).ready(function(){
if ($.browser.version = jQuery.browser.msie &&
parseInt(jQuery.browser.version) == 6) {
} else {
$("#sidebar").fadeTo('fast', 0.5);
$("#sidebar").hover(function(){
$(this).stop().fadeTo('fast', 1);
$("#primarycontainer").stop().fadeTo('fast', 0.5);
},function(){
$(this).stop().fadeTo('fast', 0.5);
$("#primarycontainer").stop().fadeTo('fast', 1);
}
);
}
});
编辑2/09/10:
Ed Woodcock在下面的回答是有效的,在我对他的回答的评论中稍作修改(我的选择)。
这是有问题的CSS:
<body>
<div id="outerdiv" div style="position: relative;">
<div id="maindiv" div style="position:relative;">Lorem ipsum dolor sit amet.</div>
<div id="content">
<div id="primary" div style="float: left; margin-right: -20.0em; width: 100%;">
<div id="primarycontainer" div style="margin-right: 16.0em;">
<p>Lorem ipsum dolor sit amet.<p>
</div></div>
<div id="sidebar" div style="float: right; width: 15.0em;">Lorem ipsum dolor sit amet.</div>
</div></div>
</html>
</body>
答案 0 :(得分:5)
这应该是诀窍,它不是很优雅,但它不应该太难以改进它:
$(document).ready(function() {
if ($.browser.version = jQuery.browser.msie &&
parseInt(jQuery.browser.version) == 6) {
} else {
$("#sidebar").fadeTo('fast', 0.5);
$("#maindiv").hover(function() {
/// The below line is what I just changed, putting the fadeTo() value
/// to 0.5 causes the divs to fade out to be translucent.
$("#primarycontainer,#sidebar").stop().fadeTo('fast', 0.5);
}, function() {
$("#sidebar").stop().fadeTo('fast', 0.5);
$("#primarycontainer").stop().fadeTo('fast', 1);
});
$("#sidebar").hover(function() {
$(this).stop().fadeTo('fast', 1);
$('#primarycontainer').stop().fadeTo('fast', 0.5);
}, function() {
$(this).stop().fadeTo('fast', 0.5);
$('#primarycontainer').stop().fadeTo('fast', 1);
});
}
});
修改
好的,我觉得你在这里错误地传达了你的意图:
此代码将:
如果这不是你想要达到的目的,那么稍微改变一下这个问题,我会按照你的要求对代码进行排序。 至于#maindiv做奇怪的行为,它很可能是你的html或css中的怪癖,jQuery代码是健全的。
答案 1 :(得分:1)
$(document).ready(function(){
if ($.browser.version = jQuery.browser.msie &&
parseInt(jQuery.browser.version) == 6) {
} else {
// Set up hover behavior for #maindiv
// When #maindiv is hovered, it will effect both
// #primarycontainer & #sidebar
$("#maindiv").hover(function(){
$("#primarycontainer,#sidebar").fadeTo('fast', 0.5);
},function(){
$("#primarycontainer,#sidebar").fadeTo('fast', 1);
}
);
// Set up hover behaviors for #primarycontainer & #sidebar
// When either #primarycontainer or #sidebar is hovered
// it will effect the element which is being hovered
$("#primarycontainer,#sidebar").hover(function(){
$(this).fadeTo('fast', 0.5);
},function(){
$(this).fadeTo('fast', 1);
}
);
}
});
答案 2 :(得分:1)
不是很棘手但有效(如果我理解你的愿望):
$("#maindiv").hover(function(){
$("#primarycontainer, #sidebar").stop().fadeTo('fast', 1);
},function(){
$("#sidebar").bind('mouseover',function(){
$(this).stop().fadeTo('fast', 1);
$("#primarycontainer").stop().fadeTo('fast', 0.5);
});
$("#primarycontainer").bind('mouseover',function(){
$(this).stop().fadeTo('fast', 1);
$("#sidebar").stop().fadeTo('fast', 0.5);
});
});