Функция переключения Jquery, которая не возвращает false?

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

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

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

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

Спасибо.


person Tom    schedule 13.03.2010    source источник


Ответы (1)


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

Since .toggle() internally uses a click handler to do its work, we must unbind click to remove a behavior attached with .toggle(), so other click handlers can be caught in the crossfire. The implementation also calls .preventDefault() on the event, so links will not be followed and buttons will not be clicked if .toggle() has been called on the element.

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

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

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

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

person Community    schedule 13.03.2010