[решено]Для элементов добавленых через AHAH не работает jquery

Главные вкладки

Аватар пользователя Positiff Positiff 10 декабря 2011 в 18:23

Проблема в том что скрипт jquery не видит элементы DOM, добавленные при помощи AHAH
Как решить проблему?

Очень похоже что решение следующее:
http://www.drupal.ru/node/39610#comment-210787

Но непонятно куда это вставлять.

Заранее спасибо

Комментарии

Аватар пользователя Positiff Positiff 11 декабря 2011 в 13:10

Заменил document ready на Drupal.Behaviors.myModule

Но все равно для созданных AHAH элементов обработчик не вызывается

Нужно вызывать Drupal.attachBehaviors
Если да, то где его вызывать?
Сейчас AHAH обработчик завершается так:

        drupal_json(array('status'=>'TRUE','data'=>$output));

где в output Лежит отрендеренный новый элемент

Аватар пользователя Positiff Positiff 11 декабря 2011 в 14:59

Код скрипта такой:

Drupal.behaviors.lotBehavior = function(context) {
  $('.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?

Аватар пользователя divined divined 12 декабря 2011 в 13:42

Как вариант:

Drupal.behaviors.ahahCallback = function() {
        jQuery(document).ajaxComplete(function(e, xhr, settings) {
                if(!ahahCallback.i)
                {
                        ahahCallback.i = true;
                        if(settings.url == "/ahah_path")
                        {
                                //Повторно вешаете jquery на элементы
                        }
                }
        }
}
Аватар пользователя Positiff Positiff 12 декабря 2011 в 23:57

Спасибо за предложение. Попробую, правда проблему удалось решить по другому -
заменив .trip_fset select на просто select
Дело в том что после того как отрабатывает AHAH, получается два вложенных дива:

<div class="form-item" id="edit-sender-region-wrapper">
   <div>
      <div class="form-item" id="edit-sender-region-wrapper">
        .....
      </div>
   </div>
</div>

Не пойму почему так - вроде бы метод replace стоит. В чем может быть причина?

Аватар пользователя divined divined 13 декабря 2011 в 0:46

а какая разница что у вас 2 вложенных дива?
Вы же обработчик цепляете на селект, а не на враппер элемент Smile

Об этой проблеме я написал на орге, никаких телодвижений.

Аватар пользователя Positiff Positiff 13 декабря 2011 в 10:16

Я тоже думал что это не должно влиять, но почему то он у меня внутренний select не видит..
Это очень странно, но тут все же два одинаковых ID