#javascript #jquery #jquery-ui
#javascript #jquery #jquery-ui
Вопрос:
Согласно этой документации пользовательского интерфейса jQuery, существует toggleClass
метод, который принимает options
объект. Однако, заглянув в исходный код, я не вижу, чтобы эта версия метода поддерживалась. Когда я пытаюсь выполнить следующее, анимации не происходит:
$("#element").toggleClass("fixed", showOrHide, {
duration: animationDuration,
easing: "swing",
queue: false,
children: true
});
Я использую jQuery 1.10.2 и jQuery UI 1.11.0. Я что-то здесь упускаю?
Пожалуйста, просмотрите этот пример jsfiddle и вот версия без начальной загрузки, чтобы показать, что это не проблема конфликта.
Примечание: .addClass( className [, options ] )
тоже не работает!
Фрагмент пользовательского интерфейса jQuery
toggleClass: (function( orig ) {
return function( classNames, force, speed, easing, callback ) {
if ( typeof force === "boolean" || force === undefined ) {
if ( !speed ) {
// without speed parameter
return orig.apply( this, arguments );
} else {
return $.effects.animateClass.call( this,
(force ? { add: classNames } : { remove: classNames }),
speed, easing, callback );
}
} else {
// without force parameter
return $.effects.animateClass.call( this,
{ toggle: classNames }, force, speed, easing );
}
};
})( $.fn.toggleClass )
Комментарии:
1. есть ли какие-либо ошибки в консоли? У вас импортирован пользовательский интерфейс jQuery? Какую версию jQuery и jQuery UI вы используете?
2. Я использую jQuery 1.10.2 и jQuery UI 1.11.0. Ошибок нет, просто ничего не происходит. И, проверяя JS-файл jQuery UI, я не вижу, как
options
версия функции вообще будет поддерживаться. К вопросу добавлен код.3. $(«#element»).Переключение классов( «исправлено»,{переключатель: showOrHide, длительность: animationDuration, ослабление: «swing», очередь: true}); это будет работать
4. Можете ли вы опубликовать разметку элемента, класс которого вы хотите переключить? Вы пробовали указывать
children: true
на случай, если анимация также должна применяться к некоторым из ее потомков?5. Добавлены ссылки jsFiddle на вопрос.
Ответ №1:
Попробуйте вот так
var animationDuration=1000;
var t=true;
function showOrHide()
{
if(t)
t=false
else
t=true
return t;
}
$("#element").toggleClass( "fixed",showOrHide(),{duration:animationDuration, easing:"swing",queue: true});
you can also use like this
$("#element").toggleClass( "fixed",{switch:showOrHide,duration:animationDuration, easing:"swing",queue: true});
Комментарии:
1. Ваш первый пример ничем не отличается от того, что я уже делал (и опубликовал в вопросе). Во втором примере не учитывается
switch
параметр.