Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2016, 11:07
Аспирант
Отправить личное сообщение для NeVirus Посмотреть профиль Найти все сообщения от NeVirus
 
Регистрация: 09.01.2013
Сообщений: 54

Селекторы\функции для динамически созданных объектов
Добрый день,

кучу всего можно найти в интернете про создание обработчиков событий для динамически созданных элементов - а вот про то как получить из них данные по селектору я что то инфы не нашел...

В общем кейс такой - есть 2 js скрипта...

Первый после прогрузки страницы создает несколько объектов в DOM - менюшки навигации, футер и все в таком духе. Причем создает просто вставляя в нужный DIV html код из заранее отформатированного текстового файла. Такая вот небольшая кустарная шаблонизация...

Второй шарится по БД, кукисам, локалстореджу и скрывает\показывает некоторые элементы DOM в зависимости от полученной инфы (роли пользователя и тому подобного).

Собственно загвоздка со вторым - он просто никак не видит созданные первым объекты. Мне не нужно навешивать на них обработчики клика и т.д, все должно сработать само после окончания загрузки страницы. Ничего особенно страшного - просто скрыть\показать, выделить цветом и все в таком духе...

Может есть подходящие функции или например заковырестые селекторы ?

Кто нибудь наверняка решал же похожую задачку?

P.S. забыл упомянуть -еще подключен JQuery к проекту и сам он на Bootstrap-e.

Последний раз редактировалось NeVirus, 21.07.2016 в 11:13.
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2016, 11:14
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Про делегирование в учебнике прочитай.
Ответить с цитированием
  #3 (permalink)  
Старый 21.07.2016, 11:39
Аспирант
Отправить личное сообщение для NeVirus Посмотреть профиль Найти все сообщения от NeVirus
 
Регистрация: 09.01.2013
Сообщений: 54

Сообщение от Decode Посмотреть сообщение
Про делегирование в учебнике прочитай.
Просматривал несколько раз. Там все что касается навешивания обработчиков - мне нужно не это.

Или Вы хотели этим сказать что я неправильно создаю элементы, загоняя напрямую код в HTML, а не пользуясь функциями добавления объектов?
Ответить с цитированием
  #4 (permalink)  
Старый 21.07.2016, 13:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от NeVirus
Там все что касается навешивания обработчиков - мне нужно не это.
А чего вам нужно?
Ответить с цитированием
  #5 (permalink)  
Старый 21.07.2016, 13:41
Аспирант
Отправить личное сообщение для NeVirus Посмотреть профиль Найти все сообщения от NeVirus
 
Регистрация: 09.01.2013
Сообщений: 54

Сообщение от laimas Посмотреть сообщение
А чего вам нужно?
Легкий доступ к атрибутам созданных объектов.

А-ля

$('#main_div').html('<div id="new_div"></div>');

$('#new_div').css('display:none;');


Временно решил подтягиванием "jquery.livequery". Но на каждый чих тащить доп. библиотеки это не айс так что вопрос открыт.

Последний раз редактировалось NeVirus, 21.07.2016 в 13:46.
Ответить с цитированием
  #6 (permalink)  
Старый 21.07.2016, 13:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

NeVirus,
задача описана так что вам невозможно подсказать.
Ответить с цитированием
  #7 (permalink)  
Старый 21.07.2016, 13:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

прочел как нужно.
Ответить с цитированием
  #8 (permalink)  
Старый 23.07.2016, 15:31
Новичок на форуме
Отправить личное сообщение для Dmytro Посмотреть профиль Найти все сообщения от Dmytro
 
Регистрация: 16.07.2016
Сообщений: 3

Сообщение от NeVirus Посмотреть сообщение
Просматривал несколько раз. Там все что касается навешивания обработчиков - мне нужно не это.
Поддерживаю вопрос. Хочу работать с динамическими элементами, но не понимаю какое событие можно использовать для делегирования. От пользователя не жду никаких действий.
Подскажите пожалуйста.
Ответить с цитированием
  #9 (permalink)  
Старый 23.07.2016, 15:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Dmytro,
где код?
Ответить с цитированием
  #10 (permalink)  
Старый 24.07.2016, 12:03
Новичок на форуме
Отправить личное сообщение для Dmytro Посмотреть профиль Найти все сообщения от Dmytro
 
Регистрация: 16.07.2016
Сообщений: 3

Сообщение от рони Посмотреть сообщение
где код?
Код переписывал несколько раз. Использовал примеры из соседних тем. Ничего не получается, как я понимаю, потому что во время выполнения скрипта нужные элементы еще не существуют.

// первое - вижу что окно не содержит элементы которые мне нужны
// нужные элементы (результат поискового запроса) загружается позже
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. - как правильно вставлять код в сообщение?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка событий на динамически созданных объектах Alexey_R jQuery 28 15.02.2017 15:28
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Быстрый поиск объектов Shasoft Общие вопросы Javascript 7 30.07.2009 05:28
Функция onclick для созданных потомков Groonel Общие вопросы Javascript 6 24.04.2009 18:35