Страница 1 из 1

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

Добавлено: 2012.10.19, 13:27
ZxUkr
Возник вопрос который не знаю как загуглить :(
Подскажите...

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

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

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

Добавлено: 2012.10.19, 13:29
Choo
Написать свою реализацию CHtml::ajaxLink или отказаться от него вовсе.

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

Добавлено: 2012.10.19, 13:32
ZxUkr
Звучит плохо... :(

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

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

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

Добавлено: 2012.10.22, 20:52
nizsheanez
Посмотреть внутрь 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}});");