Как стать автором
Обновить

Комментарии 11

полная имитация клика это mousedown+mouseup. иначе думаю если нажмете на другой элемент а кнопку отпустите над chb то тоже сработает
Да, здесь имитация неполная, но в данном случае это не критично.
Вместо $("#chb").click(); попробуйте $("#chb").trigger('click'); или $("#chb").triggerHandler('click');
Документация jQuery говорит нам, что .click() «is a shortcut for .bind('click', handler) in the first variation, and .trigger('click') in the second.» А вот с triggerHandler интереснее: «The .triggerHandler() method behaves similarly to .trigger(), with the following exceptions:
— The .triggerHandler() method does not cause the default behavior of an event to occur (such as a form submission).»
То есть, можно использовать тот же click(), дополняя имитацией стандартного поведения. Спасибо, попробую, возможно, так будет чуть проще.
jQuery тут сбоку припёка, то же самое получите и при использовании onclick.

я просто по клику делал setTimeout(handler, 0)
Возможно, но мне показалось, что это проблема именно jQuery. Неужели все js-движки работают в подобных ситуациях одинаково? Это стандарт такой что ли?)
имхо проще было бы использовать в обработчике #chb не this.checked а внутреннюю переменную. Добавилась бы только ее инициализация вначале.
Это лишь абстрактный пример, на самом деле элементов очень много, пока не вижу смысла отводить на них отдельный массив переменных.
Зачем массив? в обьекте jQuery на элементе заводите свою переменную и ей оперируете.
Что-то знакомое.

Помню что-то похоже меня удивило и причем оно по разному в IE и FF по порядку обрабатывалось.

Я в итоге добавлял на события change и keypress, а изначально пытался на click.
все очень просто.
есть чекбокс и его родной онклик который меняет его состояние
есть навешаное тобой событие которое по клику меняет его еще раз

1 если ты реально кликаешь на чекбокас происходят оба события и состояние меняться два раза тоесть становиться снова тем которое было
2 если ты програмно вызыввешь триггер то происходят оба события с тем же результатом что и прошлый раз
3 если ты вызываешь тригер хендлер то происходит только то событие которое ты навесил через жуквери.

возможно тебе будет интересно как я воевал с этим в свое время
mabp.kiev.ua/2007/07/03/onmouseover_checkbox_toggler/

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации