2013-05-01 3 views
0

Я имею место заморачиваться с JQuery и будучи немного новичка с ним вот моя проблема:Jquery изменения CSS вложенной DIV

Я делаю меню панели падение вниз, Ive получил падение вниз ок но нужно повлиять на фоновое изображение div, которое вложено внутри div, нажимаемого для запуска действия. т.е. «.side_bar_top_text» - это фон, который нужно изменить.

JQuery:

<script type="text/javascript"> 
$(document).ready(function() { 
$('.side_bar_top').click(function(){ 
    if ($(this).attr('class') != 'active'){ 
     $('.side_bar .side_bar_panel', this).slideUp(); 
     $(this).next().slideToggle(); 
     $(this).removeClass('active'); 
     $(this).addClass('active'); 

    } 
    }); 
}); 
</script> 

HTML:

<div class="side_bar_top"><div class="side_bar_top_text">COMMERCIAL CONSTRUCTION</div></div> 
<div class="side_bar"> 
    <div class="side_bar_panel"> 
    /*the list of elements*/ 
    </div> 
</div> 

Все, что мне нужно сделать, это изменить фоновое изображение side_bar_top_text с помощью CSS, когда панель вверх и наоборот. Я пробовал различные методы без везения. Может ли кто-нибудь помочь?

+2

'$ ('. Side_bar .side_bar_panel', this)' никогда не будет работать. поскольку вы ищете эти элементы WITHIN 'side_bar_top', и вы закрываете этот элемент до' side_bar', он должен быть '$ (this) .closest ('. side_bar'). find ('. side_bar_panel')' – Ohgodwhy

+0

Там это вызов метода css в jQuery [здесь] (http://api.jquery.com/css/). Что вы уже пробовали? –

ответ

0

Вам поможет? http://jsfiddle.net/jgQx3/2/

CSS:

.side_bar_top { 
    background: url(path/file1.jpg); 
} 

.side_bar_top.active { 
    background: url(path/file2.jpg); 
} 

SCRIPT:

$(document).ready(function() { 
    $('.side_bar_top').on('click', function(){ 
    var $this = $(this); 

    $this.toggleClass('active'); 
    $this.next('.side_bar').slideToggle(); 
    }); 
}); 

HTML:

<div class="side_bar_top active"> 
    <div class="side_bar_top_text">COMMERCIAL CONSTRUCTION</div> 
</div> 
<div class="side_bar"> 
    <div class="side_bar_panel"> 
    /*the list of elements*/ 
    </div> 
</div> 

Эта функция не разрушаться уже открытые варианты, хотя.

+0

ха-ха вы гений, спасибо! – john

0

Чтобы получить элемент side_bar_top_text, который является дочерним щелкнутым элементом, сделайте следующее:

$(this).find('side_bar_top_text'); 

Чтобы изменить цвет фона:

$(this).find('side_bar_top_text').css('background-image', '<your_image>'); 
0

В CSS:

.side_bar_top .side_bar_top_text{ 
    background:url(path-to-original-image.jpg); //whatever you want 
} 

.side_bar_top.active .side_bar_top_text{ 
    background:url(path-to-image.jpg); //whatever you want 
} 

Но если у вас есть определенное изображение для каждой или какой-либо другой причины, чтобы сделать это в jquery:

$(document).ready(function() { 
$('.side_bar_top').click(function(){ 
    $(this).siblings().removeClass('active'); 

    if ($(this).attr('class') != 'active'){ 
     $('.side_bar .side_bar_panel', this).slideUp(); 
     $(this).next().slideToggle(); 
     $('.side_bar .side_bar_panel', this).removeClass('active'); 
     $(this).addClass('active'); 

     $(this).find('.side_bar_top_text').css('background', 'url(path-to-image.jpg)'); 

    } 
    }); 
}); 

Edit:

В CSS вы можете увидеть, что мы переопределить фон для активного класса. Исходное изображение определено выше. Этот метод требует, чтобы jquery добавлял и удалял активный класс при щелчке.

Я добавил эту линию к своему слушателю:

$(this).siblings().removeClass('active'); 

, который должен удалить активный для каждого собрата из щелкнутого элемента. Это должно восстановить исходное изображение.

+0

это замечательно.У меня есть, чтобы изменить изображение с помощью css (jquery не будет работать, этот метод jquery был тем, который я уже пробовал), но с помощью метода css, как мне заставить его изменить изображение на Google? – john

+0

Я отредактировал свой ответ. jQuery будет работать над этим, но если он не делает то, что вы хотите, это скорее всего проблема в том, как вы написали слушателя. Проверьте свою консоль, чтобы увидеть какие-либо ошибки. –

+0

Похоже, что активный класс не удаляется. Я редактировал свое оригинальное сообщение, чтобы показать код, который я сейчас использую. есть идеи? – john

Смежные вопросы