2012-02-16 5 views
4

Я использую jQuery UI .toggleClass (класс, [продолжительность]) для переключения красного фона на поле 100x100, но результаты, которые я получаю, странны. См. http://jqueryui.com/docs/toggleClass/ для справки.jQuery UI toggleClass duration ведет себя странно

Как вы можете видеть из этого примера - http://jsfiddle.net/xkrX9/ - в первого нажмите на ДИВОМ # поле переключает красный фон немедленно (без [продолжительности]), а затем переключает его снова обратно к белой после приблизительно 1 секунды без второго щелчка мероприятие. второй щелчок (без перезагрузки страницы) приводит к тому, что класс .red переключается, как и ожидалось, с длительностью 1000 мс.

Что здесь не так? Спасибо за понимание!

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script> 

<style> 
    #box { width: 100px; height: 100px; border: 1px solid #999; } 
    .red { background: red; } 
</style> 

<div id="box"></div> 

<script> 
    $('#box').click(function() { 
     $(this).toggleClass('red', 1000); 
    }); 
</script> 

ответ

2

Казалось бы, это ошибка. Если нет класса атрибута он не будет работать, но как только вы добавляете класс в атрибут объявления узел работает нормально,

http://jsfiddle.net/xkrX9/3/

Я бы отчет об ошибке.

Jquery UI Bug #8113

+0

Совершенная, это отвечает на вопрос. Спасибо, что разъяснил Эндрю! – klicks

+0

Спасибо. Я вижу, что css 'border' также действует аналогичным образом. Это тоже ошибка jQuery? – maan81

+0

@ maan81 С первого взгляда это выглядит как ошибка jQuery UI, в частности, функция animateClass. Он выполняет много вызовов 'this.attr ('class')' и 'this.attr ('style')', что является наиболее вероятным виновником. – Andrew

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