Jquery mouse одно событие с наведением мыши (fadein и fadeout) - PullRequest
2 голосов
/ 16 декабря 2009

Итак, я пытаюсь заставить div content1 исчезать, когда я подхожу, когда моя мышь над div logo1 , content1 должна исчезать, когда моя мышь не работает. logo1 о, и div контента имеют видимость: скрыто на CSS. То же самое касается logo2 3 и 4

Я пробовал этот код, но он не работал для меня (я не добавил fadeout, потому что не знаю, где его добавить после того, как использовал fadein)

$(document).ready(function(){ 
    $("logo1, logo2, logo3, logo4").one('mouseover', function(){
    $("logo1").fadeIn({"content1"}, "slow");
    $("logo2").fadeIn({"content2"}, "slow");
    $("logo3").fadeIn({"content3"}, "slow");
    $("logo4").fadeIn({"content4"}, "slow");
    $("content1, content2, content3, content4").mouseout('fadeout');
 });

что не так с моим кодом? Есть ли более простой способ сделать это? это можно сделать с помощью одного события?

EDIT:

вот HTML Тегерил

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" type="text/css" href="css/main.css" />
<title>test</title>
<script type='text/javascript' src='js/jquery.js'></script>
<script type='text/javascript' src='js/mouseover.js'></script>
</head>

<body>
    <div id="container">
        <div class="logo"></div>
        <div class="stripes"></div>
        <div class="button_info"></div>
        <div class="button_contact"></div>
        <div class="logo1"></div>
        <div class="logo2"></div>
        <div class="logo3"></div>
        <div class="logo4"></div>
        <div class="content1"></div>
        <div class="content2"></div>
        <div class="content3"></div>
        <div class="content4"></div>
    </div>
</body>
</html>

бит JavaScript

$(document).ready(function(){ 

$(".logo1").hover(function() { 
    $(".content1").fadeIn("slow");
}, function() {
    $(".content1").fadeOut("slow");
});
$(".logo2").hover(function() { 
    $(".content2").fadeIn("slow");
}, function() {
    $(".content2").fadeOut("slow");
});
$(".logo3").hover(function() { 
    $(".content3").fadeIn("slow");
}, function() {
    $(".content3").fadeOut("slow");
});
$(".logo4").hover(function() { 
    $(".content4").fadeIn("slow");
}, function() {
    $(".content4").fadeOut("slow");
});
});

и css

body{
    margin: 0;
    padding: 0;
    text-align: center;
    background-image:url(../images/bg.png);
    background-repeat:repeat;
}

#container{
    background-image:url(../images/bg.png);
    text-align: left;
    margin: auto;
    width: 939px;
    height: 570px;
    top:41px;
    background-repeat:repeat;
    position:relative;
}

.logo{
    background-image:url(../images/logo.png);
    width: 345px;
    height: 82px;
    position:absolute;
}

.stripes{
    background-image:url(../images/stripes.png);
    background-repeat:repeat-x;
    width:939px;
    height:5px;
    position:absolute;
    top:97px;
    left:0px;
}

.button_info{
    background-image:url(../images/button_info.png);
    width: 98px;
    height: 31px;
    position:absolute;
    top:114px;
    left: 0px;
}

.button_contact{
    background-image:url(../images/button_contact.png);
    width: 211px;
    height: 35px;
    position:absolute;
    top:114px;
    right:0px;

}
.logo1{
    background-image:url(../images/logo_blue.png);
    background-repeat:repeat;
    width: 231px;
    height: 91px;
    position:absolute;
    bottom: 322px;

}
.logo2{
    background-image:url(../images/logo_green.png);
    width: 231px;
    height: 91px;
    position:absolute;
    bottom: 226px;

}
.logo3{
    background-image:url(../images/logo_yellow.png);
    width: 231px;
    height: 91px;
    position:absolute;
    bottom: 130px;
}
.logo4{
    background-image:url(../images/logo_red.png);
    width: 231px;
    height: 91px;
    position:absolute;
    bottom: 34px;

}

.content1{
    background-image:url(../images/logo_blue.png);
    width: 703px;
    height: 379px;
    position:absolute;
    left:236px;
    bottom:34px;
}
.content2{
    background-image:url(../images/logo_green.png);
    width: 703px;
    height: 379px;
    position:absolute;
    left:236px;
    bottom:34px;
}
.content3{
    background-image:url(../images/logo_yellow.png);
    width: 703px;
    height: 379px;
    position:absolute;
    left:236px;
    bottom:34px;

}
.content4{
    background-image:url(../images/logo_red.png);
    width: 703px;
    height: 379px;
    position:absolute;
    left:236px;
    bottom:34px;

}

Ответы [ 3 ]

4 голосов
/ 16 декабря 2009

Возможно, вам нужна функция наведения.

 $(document).ready(function(){ 
     $("#logo1, #logo2, #logo3, #logo4").hover(function(){
              //perform fadeIn here
      }, function(){
           //perform fadeOut here
      });
  });
1 голос
/ 16 декабря 2009

Если у вас есть классы, как описано в комментарии выше, вы должны поставить '.' перед ними вместо #. # означает идентификатор. означает класс.

$(document.ready(function() {
    $(".logo1, .logo2, .logo3, .logo4").hover(function() {
        var arrayOfClasses = $(this).attr('class').split(' '); 
        $(arrayOfClasses).each(function() {
            if (this.indexOf("logo" > -1) {
                $(".content" + this.slice(this.indexOf("logo") + 4)).fadeIn("slow");
            }
        });
    }, function() {
        var arrayOfClasses = $(this).attr('class').split(' ');
        $(arrayOfClasses).each(function() {
            if (this.indexOf("logo" > -1) {
                $(".content" + this.slice(this.indexOf("logo") + 4)).fadeOut("slow");
            }
        }); 
    });
});

Определенно, репликация кода, а не тестирование, но я думаю, что это будет делать то, что вы хотите. При наведении курсора на любой из этих элементов он возьмет рассматриваемый элемент, разделит классы этого элемента на массив, перебирает его для класса, включающего логотип, а затем постепенно увеличивает / уменьшает соответствующий нумерованный контент, вырезая число из конца название класса логотипа.

Редактировать на основе комментария ниже:

Если вы хотите, чтобы это было проще, что приведет к дополнительной репликации кода, вам просто нужно:

$(".logo1").hover(function() { 
    $(".content1").fadeIn("slow");
}, function() {
    $(".content1").fadeOut("slow");
});

... для каждой пары. И, конечно, поместите его в $ (document.ready (function () {...});

Редактировать на основе второго комментария ниже:

Хорошо, я только что проверил, попробовав все ваши файлы локально, и проблема не в JavaScript, а в CSS / HTML. Попробуйте добавить это к вашему CSS:

#container div {
    border: solid 1px #000000;
}

Вы обнаружите, что в Safari эти элементы div нигде не существуют, потому что они не расположены должным образом для Webkit, тогда как в Firefox они отображаются.

Также возможно, что «задержка», которую вы видите, является проблемой, когда все элементы div с классом content1-4 уже видны, и вы не можете начать видеть эффект, пока они сначала не исчезнут, а затем не вернутся обратно. Вы хотите установить их CSS для отображения: нет; и FadeIn JQuery сделает их видимыми.

0 голосов
/ 16 декабря 2009

На основании того, что объяснил Винсент, я получил этот код

    $(document).ready(function(){ 
     $(".logo1, .logo2, .logo3, .logo4").hover(function(){
              //perform fadeIn here
            $('.content1').fadeIn("slow");
            $('.content2').fadeIn("slow");
            $('.content3').fadeIn("slow");
            $('.content4').fadeIn("slow");
      }, function(){
           //perform fadeOut here
            $('.content1').fadeOut("slow");
            $('.content2').fadeOut("slow");
            $('.content3').fadeOut("slow");
            $('.content4').fadeOut("slow");
      });
  });

Однако я не вижу никакой связи между наведением на логотип и постепенным исчезновением и исчезновением каждого содержимого, которое будет выглядеть следующим образом:

logo1 при наведении указателя мыши на контент1 и потухании контента1, когда мышь не находится над логотипом1

logo2 при наведении курсора на содержимое2 и затухание2, когда мышь не находится над логотипом2

logo3 при наведении указателя мыши на контент3 и на экране контента3, когда мышь не находится над логотипом3

logo4 при наведении указателя мыши на содержимое4 и затухание содержимого4, когда мышь находится над логотипом4

...