Функция переключения Jquery, которая не возвращает false? - PullRequest
1 голос
/ 13 марта 2010

Можно ли остановить автоматическое применение функции protectDefault () в простой функции переключения Jquery?

$(".mydiv").toggle(
    function () {
        $(this).addClass("blue");
    },
    function () {
        $(this).removeClass("blue");
    }
);

Вышеуказанное не позволяет элементам внутри div нормально реагировать на щелчок.

Это не обязательно должна быть функция toggle () - все, что позволяет включать и выключать класс И не возвращает false, было бы замечательно.

Спасибо.

1 Ответ

1 голос
/ 13 марта 2010

Документация допускает это как ограничение:

Поскольку .toggle () внутренне использует обработчик щелчков для своей работы, мы должны отменить привязку щелчка, чтобы удалить поведение, связанное с .toggle (), чтобы другие обработчики щелчков могли попасть в перекрестный огонь. Реализация также вызывает .preventDefault () для события, поэтому ссылки не будут переходить и кнопки не будут нажиматься, если .toggle () вызывается для элемента.

источник: http://api.jquery.com/toggle/

То есть встроенного способа нет. К счастью, как говорится в документации, «реализовать такое же поведение вручную довольно просто». В данном случае:

$(".mydiv").click(function(){
  $(this).toggleClass("blue");
}}

(Подробнее о toggleClass () .)

...