Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.06.2010, 09:10
Аватар для TheDeadOne
Новичок на форуме
Отправить личное сообщение для TheDeadOne Посмотреть профиль Найти все сообщения от TheDeadOne
 
Регистрация: 20.06.2010
Сообщений: 5

Манипуляции с DOM в обработчике DOMSubtreeModified
Есть функция, которая выполняет манипуляции с публикациями в блоге, пририсовывая к ним дополнительные элементы управления. Функция успешно работает с теми публикациями, которые отображаются при загрузке страницы, а вот те, которые позже "дорисовываются" ajax'ом, остаются без этих элементов. Чтобы справится с этой бедой, добавил обработчик DOMSubtreeModified. И вот тут-то и столкнулся с проблемой. Обработчик прекрасно отлавливает появление новых публикации, разбирает их на составляющие, но не может ничего к ним добавить. Никаких ошибок не возникает. Либо у меня "замылился глаз" и я упускаю какую-то мелочь, либо чего-то не знаю об обработке этого типа событий.

function addCtrl(target) {
  if(!($(target).hasClass('processed'))) {
    var pid = $(target).attr('id');
    var usrName = $(target).children('.dd').children('.p').children('.js-user_login').html();
    var uid;
    var classList = $(target).attr('class').split(' ');
    for(var classNdx in classList) {
      if(classList[classNdx][0] == 'u')
        uid = classList[classNdx];
    }
        
    $(target).addClass('processed');

    $('<div><a id="ctrl_' + pid + '" href="#">Action1</a> / <a id="ctrl_' + uid + '" href="#">Action2</a></div>')
    .insertAfter($(target).children('div.dd').children('div.p').children('.phpb'));
    $('a#ctrl_' + pid).click(doAction1);
    $('a#ctrl_' + uid).click(doAction2);
  }
}

//Вызов отсюда безуспешный
function parse() {
  $(this).children('div.post').each(function() {
    addCtrl(this);
  });
}

//Вызов отсюда успешный
$('div.post').each(function() {
  addCtrl(this);
});

$('#js-posts_holder').bind('DOMSubtreeModified', parse);
Ответить с цитированием
  #2 (permalink)  
Старый 20.06.2010, 09:59
Аватар для TheDeadOne
Новичок на форуме
Отправить личное сообщение для TheDeadOne Посмотреть профиль Найти все сообщения от TheDeadOne
 
Регистрация: 20.06.2010
Сообщений: 5

Проблема решена. Элемент с классом phpb рисуется ajax'ом после отрисовки всего поста. На момент срабатывания моего обработчика, его просто нет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где найти справочник методов DOM? master_alf Events/DOM/Window 6 16.04.2010 12:25
Вопрос о циклических ссылках (JavaScript -> Dom -> JavaScipt) BlueIce Events/DOM/Window 10 17.02.2010 21:58
Обращение к layer в DOM Asd Элементы интерфейса 2 01.07.2009 23:16
Сохранение дерева DOM в файл Александр1985 Общие вопросы Javascript 7 24.01.2009 23:15