Селекторы\функции для динамически созданных объектов
Добрый день,
кучу всего можно найти в интернете про создание обработчиков событий для динамически созданных элементов - а вот про то как получить из них данные по селектору я что то инфы не нашел... В общем кейс такой - есть 2 js скрипта... Первый после прогрузки страницы создает несколько объектов в DOM - менюшки навигации, футер и все в таком духе. Причем создает просто вставляя в нужный DIV html код из заранее отформатированного текстового файла. Такая вот небольшая кустарная шаблонизация... Второй шарится по БД, кукисам, локалстореджу и скрывает\показывает некоторые элементы DOM в зависимости от полученной инфы (роли пользователя и тому подобного). Собственно загвоздка со вторым - он просто никак не видит созданные первым объекты. Мне не нужно навешивать на них обработчики клика и т.д, все должно сработать само после окончания загрузки страницы. Ничего особенно страшного - просто скрыть\показать, выделить цветом и все в таком духе... Может есть подходящие функции или например заковырестые селекторы :) ? Кто нибудь наверняка решал же похожую задачку? P.S. забыл упомянуть -еще подключен JQuery к проекту и сам он на Bootstrap-e. |
Про делегирование в учебнике прочитай.
|
Цитата:
Или Вы хотели этим сказать что я неправильно создаю элементы, загоняя напрямую код в HTML, а не пользуясь функциями добавления объектов? |
Цитата:
|
Цитата:
А-ля $('#main_div').html('<div id="new_div"></div>'); $('#new_div').css('display:none;'); Временно решил подтягиванием "jquery.livequery". Но на каждый чих тащить доп. библиотеки это не айс так что вопрос открыт. |
NeVirus,
задача описана так что вам невозможно подсказать. |
:) прочел как нужно.
|
Цитата:
Подскажите пожалуйста. |
Dmytro,
где код? |
Цитата:
// первое - вижу что окно не содержит элементы которые мне нужны // нужные элементы (результат поискового запроса) загружается позже window.onload = addOurLink(); function addOurLink() { alert ('Окно готово'); var links = document.getElementsByClassName(" item item-border"); var count = links.length; for(var i = 0; i < count; ++i) { alert('проходим элемент' + i); } }; //второе - взят где-то обработчик события но он у меня не срабатывает $(document).ajaxComplete(function() { alert("ALL current AJAX calls have completed"); }); //третье - код для делегирования, который взял в соседней теме //хотел проверить, что обработка множества событий //позволит обращаться к элементам, которые загружаются динамически //выдает ошибку - "parentElem is not defined" //для строки "parentElem.addEventListener('click', modify);" function hasClass(elem, cls) { // ... return true; } function modify() { var event = e || window.event; var target = event.target || event.srcElement; if (hasClass(target, ' item item-border')) { addModEvent(); } if (target.className == ' item item-border') { addModEvent(); } } function addModEvent() { parentElem.addEventListener('click', modify); } addModEvent(); Не судите строго за незнание. Спасибо за помощь. P.S. - как правильно вставлять код в сообщение? |
Часовой пояс GMT +3, время: 22:29. |