Прямая vs делегированная обработка javaScript событий

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
ZxUkr
Сообщения: 20
Зарегистрирован: 2011.11.21, 13:00

Прямая vs делегированная обработка javaScript событий

Сообщение ZxUkr » 2012.10.19, 13:27

Возник вопрос который не знаю как загуглить :(
Подскажите...

Если через CHtml создавать например CHtml::ajaxLink то yii по умолчанию вешает делегированный обработчик событий на элемент body
$('body').on('click','#yt1' ... и т.д.
Что создаёт определённые трудности при контроле всплытия события по DOM дереву.

Как сделать так чтобы обработчик вешался напрямую на конкретный элемент, а не на body?

Choo
Сообщения: 154
Зарегистрирован: 2011.09.20, 22:58

Re: Прямая vs делегированная обработка javaScript событий

Сообщение Choo » 2012.10.19, 13:29

Написать свою реализацию CHtml::ajaxLink или отказаться от него вовсе.

ZxUkr
Сообщения: 20
Зарегистрирован: 2011.11.21, 13:00

Re: Прямая vs делегированная обработка javaScript событий

Сообщение ZxUkr » 2012.10.19, 13:32

Звучит плохо... :(

Если быть точнее, то я использую
$this->widget('bootstrap.widgets.BootButton' ...

Может там возможно?

Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Прямая vs делегированная обработка javaScript событий

Сообщение nizsheanez » 2012.10.22, 20:52

Посмотреть внутрь CHtml не пробовали?

Код: Выделить всё

                  if($live)
            $cs->registerScript('Yii.CHtml.#' . $id, "$('body').on('$event','#$id',function(){{$handler}});");
        else
            $cs->registerScript('Yii.CHtml.#' . $id, "$('#$id').on('$event', function(){{$handler}});");
 

Ответить