Привязка обработчиков jQuery на этапе захвата события (не всплывание событий)
Я рассчитываю реализовать делегирование событий для событий размытия / фокуса, аналогично тому, что было предложено в режиме quirksmode. Как объяснено в TFA, события размытия и фокуса не всплывают, поэтому вы не можете использовать делегирование событий с ними на фазе пузырьков, но вы можете захватить их на этапе захвата (man, события javascript странные).
Во всяком случае, насколько я вижу, все события jQuery применяются к фазе пузырьков, или, по крайней мере, там я всегда их использовал. Я не вижу никакой информации об этом так или иначе в документах jQuery, и по умолчанию использование чего-то вроде $('#foo'). Blur(blurHandler), кажется, не фиксирует это.
Я бы предпочел придерживаться использования jQuery для согласованности; Есть какой-либо способ сделать это?
1 ответ
Если вы говорите, что хотите, чтобы контейнер вызывал обработчик, когда потомок <input>
получить фокус или размытие, попробуйте использовать .focusin()
а также .focusout()
,
Из документов:
Событие focusin отправляется элементу, когда он или любой элемент внутри него получают фокус. Это отличается от события фокуса тем, что поддерживает обнаружение события фокуса на родительских элементах.
Событие focusout отправляется элементу, когда он или любой элемент внутри него теряет фокус. Это отличается от события размытия тем, что оно поддерживает обнаружение потери фокуса от родительских элементов (другими словами, оно поддерживает всплытие событий).