Tag Archives: jQuery

Расширение базового функционала jquery-ui-виджетов

Захотелось сделать более правильную работу с триггерением/навешиванием обработчиков на события, чем это реализовано в jquery-ui. При этом сам функционал надоело копировать из виджета в виджет. В общем, вот простой добавить методы к своим виджетам:

Потом для каждого виджета нужно будет указать опциональный второй параметр

Внимание нужно обратить на второй параметр $.my.my_extension, который в …

Read more

Как бороться с повторным добавлением обработчика события в jQuery

Нужно было навешивать и снимать обработчик клика динамически, при этом не затронув чужие обработчики, а их на элементе несколько, каждый ставится своим виджетом. Мой jQuery-ui-виджет навешивает клик только если его ещё нет. Для этого сделан отдельный метод:

Работа с событиями в jQuery 1.7

В jQuery 1.7 добавили .on() и .off() для единообразия работы с событиями. bind, live и delegate могли вести себя непредсказуемо при использовании вместе. Например, $(document).unbind(‘click’) убирал все live(‘click’)-события со всего документа. Новое API событий .on() and .off() призвано как-то унифицировать систему создания обработчиков событий: Старое API Новое API $(elems).bind(events, fn) $(elems).on(events, fn) $(elems).bind(events, { mydata: 42 }, …

Read more

jQuery.deferred

В jQuery 1.5 была полностью переработана модель асинхронных запросов. Теперь они возвращают deferred-объект, содержащий promise-объект, который содержит методы, позволяющие узнать состояние запроса или навесить дополнительные обработчики. promise-Объект содержит методы then, done, fail, isResolved и isRejected. Суть нового подхода состоит в следующем:

$.when принимает deferred-объект или объекты и возвращает promise-объект. Можно делать и так:

Read more

jQuery.delegate

jQuery.delegate и jQuery.undelegate появились в jQuery 1.4.2. Это аналоги .live и .die(). У .live и .die() есть проблемы с, к примеру, вложенными объектами, с встраиванием в цепочки и много ещё. Синтаксис .delegate отличается от .live и, соответственно, .click и т.п. Пример использования:

http://api.jquery.com/delegate/ Работа с событиями в jQuery 1.7+

Работа с событиями в jQuery-ui

Если нужно из виджета стриггерить событие, это сделать это можно двумя способами:

Допустим, что наш виджет называется MyCoolWidget. Тогда поймать наши события можно так:

Обратите внимание на второй bind — префиксом к событию в этом случае явлется название виджета в нижнем регистре. Кстати, есть ещё один способ обработать событие от this._trigger — …

Read more

Способ узнать, какие события забиндены на элементе в jQuery

Выдаст все события, которые слушаются обработчиками на элементе.

jQuery templates (расширение jQuery, шаблонизатор)

Всё достаточно просто.

Шаблон:

http://api.jquery.com/category/plugins/templates/ http://habrahabr.ru/blogs/jquery/112843/ http://habrahabr.ru/blogs/jquery/113672/

jQuery — обработка событий с использованием Namespaced Events

Часто события навешиваются на элементы так:

А когда нужно снять обработчик события с элемента, то делается это так:

При этом слетят все обработчики события click с элемента. Можно снимать только конкретный обработчик, но это не очень удобно. Гораздо удобнее группировать обработчики в неймспэйсы по функциональности, а потом снимать обработчики всего неймспэйса:

При …

Read more

Передача параметров с сервера к jQuery. Продвинутый способ.

Старый способ передачи параметров с сервер-сайда на клиент-сайд для jQuery обычно выглядел так:

Потом в скрипте можно было обращаться к свойствам DOM-элемента

Есть более интересный способ, использующий jQuery data:

В скрипте можно обратиться к этим свойствам так: