Как добавить функцию обратного вызова к функции slideUp()
, если исходный селектор, который я использую, содержит children()
?Функция обратного вызова JQuery slideUp, когда начальный селектор включает в себя дочерний объект
$('.homebuttonbutton').hover(function() {
$(this).stop().children('.homebuttonaction').slideDown();
$(this).children('.homebuttonlabel').addClass('whitebutton');
}, function() {
$(this).stop().children('.homebuttonaction').slideUp(300, function() {
$(this).children('.homebuttonlabel').removeClass('whitebutton');
});
//$(this).children('.homebuttonlabel').removeClass('whitebutton');
});
Так в идеале, когда парил, ребенок .homebuttonaction
скользит вниз и имеет .whitebutton
класс добавляемые, а затем, когда не-парили, что .homebuttonaction
скользит вверх и .whitebutton
класс удаляется.
Я надеюсь, что класс удален ПОСЛЕ завершения анимации slideUp
, но я не уверен, как его выбрать, поскольку начальный селектор использует children
для функции обратного вызова.
Там собираются быть несколько .homebuttonaction
классов, поэтому я не могу просто использовать
$('.homebuttonaction').removeClass('.whitebutton');
, потому что тогда он будет применяться к каждому, не так ли? Выполняет ли функция обратного вызова $(this)
как элемент, выбранный в первую очередь, или как текущий выбранный элемент, найденный через children()
?
Спасибо за помощь, ТАК.
EDIT Вот моя скрипка - http://jsfiddle.net/kcxWc/ - как вы можете видеть, класс не удаляется, как это должно быть после эффекта slideUp закончится. Я считаю, что это вопрос выбора ...
Вы не должны использовать '$ (это)' 'внутри callback' вместо этого, вы можете кэшировать его снаружи, как' var $ this = $ (this) 'then использовать' $ this' вместо '$ (this)'. Ответ аналогичен этому [здесь] (http://stackoverflow.com/questions/15058159/jquery-dropdown-on-click/15058628#15058628). –
Есть ли проблемы с кодом? Что не происходит, как вы ожидаете? – Andre
@Andre функция обратного вызова, удаления класса, не работает. Я считаю, что селектор неверен. – RCNeil