2010-11-08 4 views
0

вот моя, вероятно (и надеюсь) простая задача:Jquery нажмите и toggleClass вопрос

У меня есть список с изображениями как навигация. когда вы наводите на них курсор, jquery оживляет div с надписью и показывает это. он исчезает из мыши. (отлично работает)

, когда вы нажимаете на изображение, заголовок div анимации далее и накладывает изображение полностью (отлично работает). в то время как парящий над другим изображением в навигационном режиме заголовок div также оживляет (отлично работает).

проблема: при нажатии второго изображения навигации анимация первого (щелкнула) должна исчезнуть.

вот JQuery:

var thumbslide = $('.boxgrid.captionfull').click(function() { 
    $(this).toggleClass('clicked').children('.cover').stop().animate({top: 0, height:"230px", opacity: 1}, 350); 
}); 
$('.boxgrid.captionfull:not(.clicked)').live('mouseenter', function() { 
    $(this).children('.cover').stop().animate({top: 130}, 350); 
}).live('mouseleave', function() { 
    $(this).children('.cover').stop().animate({top: 230}, 350); 
}) 

и вот ссылка на dev site

на любую помощь приветствуется, спасибо.

ответ

0

Это удаляет clicked класс и оживляет его обратно и возвращает непрозрачность обратно до 0,7:

var thumbslide = $('.boxgrid.captionfull').click(function() { 
    $('.boxgrid.captionfull.clicked').removeClass('clicked').children('.cover').stop().animate({top: 230, opacity: 0.7}, 350); 
    $(this).toggleClass('clicked').children('.cover').stop().animate({top: 0, height:"230px", opacity: 1}, 350); 
}); 
+0

удивительный. работает. но почему код jamiecs (без части анимации) работает только при наведении курсора на последний элемент? я имею в виду, что он удалил класс, но не должен ли он снова вернуться в прежнее состояние? просто интересно .. – tobiasmay

+0

Потому что ваш 'mouseenter' /' mouseleave' код устанавливает значение 'top'. Поэтому, когда вы moused над ним, он все равно будет делать эту анимацию, но непрозрачность не будет отменена. – PetersenDidIt

0

Разве это не случай нахождения любого другого элемента и его удаления?

var thumbslide = $('.boxgrid.captionfull').click(function() { 
    $('.boxgrid.captionfull.clicked').removeClass('clicked'); 
    $(this).toggleClass('clicked').children('.cover').stop().animate({top: 0, height:"230px", opacity: 1}, 350); 
}); 
+0

угадать его любопытный путь, но когда я пытаюсь его таким образом, она только удаляет щелкнув класс во время зависания над ранее щелканным элементом. – tobiasmay

+0

@tobiasmay - можете ли вы создать упрощенную jsfiddle, показывающую проблему. www.jsfiddle.net – Jamiec

+0

вот скрипка: http://www.jsfiddle.net/tobiasmay/QudtF/ – tobiasmay

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