Метод переключения пользовательского интерфейса jQuery с опциями не существует?

#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 параметр.