Изменение фонового изображения с помощью jquery (удаление изображения bg при нажатии на ту же кнопку)

#jquery

#jquery

Вопрос:

Я пытаюсь изменить фоновое изображение с помощью пункта меню. Сейчас это работает, но проблема в том, что при нажатии на то же меню снова отключается фоновое изображение. Я думаю, мне нужно использовать «если», но где, как? и извините за мой плохой английский. Вот Jquery:

 //fadein when page opened
$(window).load(function(){

                    $('#wrapper').children('div:first').fadeIn(3000);

                    $('#wrapper').children('div:first').addClass('active');
                });

                //Change Background div
                $list.find('.menubutton a').bind('click',function(){
                    var $this = $(this);
                    var divid = $this.attr("alt");
                    $('#'  divid).fadeIn(3000);
                    $('#wrapper').find('.active').removeClass('active').fadeOut(3000);
                    $('#'  divid).addClass('active');
                });
            });
  

И HTML:

 <div id="wrapper">
<div id="bg1" class="fullBg"></div>
<div id="bg2" class="fullBg"></div>
<div id="st_loading" class="st_loading"><span>Loading...</span></div>
<div id="logo"></div>
<div id="content">
    <div id="mainmenu">
        <div id="accordion">
        <div class="menubutton"><a class="menulink titilliumtext22l_thin" href="#" alt="bg1"><span>Menu 1</span></a></div>
        <div id="content1" class="component"></div>
        <div class="menubutton"><a class="menulink titilliumtext22l_thin" href="#" alt="bg2"><span>Menu 2</span></a></div>
        <div id="content2" class="component"></div>
  

и CSS:

 div.fullBg{
    position:absolute;
    left:0px;
    top:0px;
    overflow: hidden;
    background-size:cover;
    height:100%;
    width:100%;
    display:none;
}
div.active {
    z-index:-99;
}
#bg1 {
    background:url(../images/album/1.jpg);
}
#bg2 {
    background:url(../images/album/2.jpg);
}
  

Ответ №1:

 $('#wrapper').find('.active').removeClass('active').fadeOut(3000, function() {
        $('#'  divid).addClass('active');
});
  

проблема в том, что вы устанавливаете фон перед выполнением fadeout. сделайте это, как указано выше, и у вас не возникнет проблем.

Ответ №2:

fadeIn(3000) Метод сделает видимый элемент невидимым перед его исчезновением (альфа от 0 до 1), поэтому при втором нажатии кнопки фон становится невидимым и он снова исчезает. Вам нужно условие. попробуйте это:

 $list.find('.menubutton a').bind('click',function(){
    var $this = $(this);
    var divid = $this.attr("alt");
    if ($('#'   divid).not(':visible')) {
        $('#'  divid).fadeIn(3000);
        $('#wrapper').find('.active').removeClass('active').fadeOut(3000);
        $('#'  divid).addClass('active');
    }
});
  

Комментарии:

1. я изменил условие if с помощью этого и его работу, спасибо if ($ (‘#’ divid).attr («class») == «fullBg») {