jQuery悬停fadeTo有三个div

mar*_*dge 4 jquery if-statement fadeto

我在这里使用这个div fadeTo代码,根据悬停,它会消除两个div中的一个.

我想做的是添加第三个选项 - 第三个div叫做#maindiv - 这样:"如果将鼠标悬停在#maindiv上,请不要淡化#sidebar或#primarycontainter,但如果将鼠标悬停在#sidebar上或#primarycontainter,然后淡出其中任何一个(取决于悬停),但不要淡化#maindiv."

我如何保留现有的其他语句,使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);
            }
        );
    }
});
Run Code Online (Sandbox Code Playgroud)

编辑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>
Run Code Online (Sandbox Code Playgroud)

Ed *_*mes 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);
            });
        }
    });
Run Code Online (Sandbox Code Playgroud)

编辑

好的,我觉得你在这里错误地传达了你的意图:

此代码将:

  • 在悬停时交替淡化#sidebar和#primarycontainer,正在盘旋的容器变得完全不透明,并且未被盘旋的div变得半透明.
  • 当没有任何东西悬停时,#sidebar半透明
  • 当#maindiv悬停时,使#sidebar和#primarycontainer完全不透明

如果这不是你想要达到的目的,那么稍微改变一下这个问题,我会按照你的要求对代码进行排序.至于#maindiv做奇怪的行为,它很可能是你的html或css中的怪癖,jQuery代码是健全的.