Проблема в том что скрипт jquery не видит элементы DOM, добавленные при помощи AHAH
Как решить проблему?
Очень похоже что решение следующее:
http://www.drupal.ru/node/39610#comment-210787
Но непонятно куда это вставлять.
Заранее спасибо
Проблема в том что скрипт jquery не видит элементы DOM, добавленные при помощи AHAH
Как решить проблему?
Очень похоже что решение следующее:
http://www.drupal.ru/node/39610#comment-210787
Но непонятно куда это вставлять.
Заранее спасибо
Комментарии
откройте для себя Drupal.behaviors
Заменил document ready на Drupal.Behaviors.myModule
Но все равно для созданных AHAH элементов обработчик не вызывается
Нужно вызывать Drupal.attachBehaviors
Если да, то где его вызывать?
Сейчас AHAH обработчик завершается так:
где в output Лежит отрендеренный новый элемент
Код скрипта такой:
$('.trip_fset select:not(.lot-processed)', context).addClass('lot-processed').each(function () {
//Вторая страница - добавление признаков заполненности
$('.trip_fset select').change(function (){
if ($(this).val() != 0) {
$(this).parent().addClass('done');
}
else {
$(this).parents('.form-item.done').removeClass('done');
}
});
});
}
Почему он не вызывается для созданных элементов через AHAH?
Как вариант:
jQuery(document).ajaxComplete(function(e, xhr, settings) {
if(!ahahCallback.i)
{
ahahCallback.i = true;
if(settings.url == "/ahah_path")
{
//Повторно вешаете jquery на элементы
}
}
}
}
Спасибо за предложение. Попробую, правда проблему удалось решить по другому -
заменив .trip_fset select на просто select
Дело в том что после того как отрабатывает AHAH, получается два вложенных дива:
<div>
<div class="form-item" id="edit-sender-region-wrapper">
.....
</div>
</div>
</div>
Не пойму почему так - вроде бы метод replace стоит. В чем может быть причина?
а какая разница что у вас 2 вложенных дива?
Вы же обработчик цепляете на селект, а не на враппер элемент
Об этой проблеме я написал на орге, никаких телодвижений.
Я тоже думал что это не должно влиять, но почему то он у меня внутренний select не видит..
Это очень странно, но тут все же два одинаковых ID