Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Уникальная идентификация DOM-узлов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: А-ля xpath
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2014 - 17:04:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Собственно, имеется необходимость идентифицировать узлы в DOM'е.
Не обязательно брать xpath решения типа такого.

Суть какая, я могу выбрать элемент по айди, а потом выбрать коллекцию по классу среди которых будет тот самый с айди.
Так, я создал var elementsData = {}; в котором хочу хранить повешенные на элементы события, очереди и прочую фигню.
Ну вот для точной идентификации узлов, надо бы что-то подставить ака ключ (имя св-ва), например так: elementsData['/html/body/div[2]/div/a'] = {что-то там};

Да, просто надо не потерять события и данные для конкретного элемента.
Да, но, даже если я буду использовать в качестве ключа xpath, и даже если с айдишниками и классами - а что будет когда я динамически изменю айдишник или класс? А ничего, выборка вернет тот самый элемент, но xpath его будет совсем не такой, соответственно события и данные элемента потеряются.

Ну и вариант номер два - а если добавлять найденному элементу кастомное св-во, при повторной выборке его из DOM я получу ссылку на тот элемент который был найден ранее и увижу там кастомное св-во, или я получу новый domNode? А это кроссбраузерно?

Еще варианты?
 
 Top
esterio
Отправлено: 30 Ноября, 2014 - 17:30:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




такая же была задача. решил кастомним свойством.
http://forum.php.su/topic.php?fo...0&topic=4548
 
 Top
teddy
Отправлено: 30 Ноября, 2014 - 17:31:42
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




DeepVarvar пишет:
просто надо не потерять события и данные для конкретного элемента.

Значит нужно иметь возможность идентифицировать элемент по уникальному признаку.

Если парсишь через xPath то например можешь ориентироваться по позициям если они не будут меняться
Можно по атрибутам(так помоему проще). Если штатные атрибуты могут меняться как ты говорил - тогда подойдут кастомные которые кроме как идентефикации элемента никакой смысловой нагрузки в себе нести не будут

DeepVarvar пишет:
я получу ссылку на тот элемент который был найден ранее и увижу там кастомное св-во

Какой элемент запросишь такой и получишь Улыбка Т.е если блоку с id="vasya" присвоишь кастомный атрибут то при повторной выборке получишь ссылку на тот же узел но уже с кастомным атрибутом
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2014 - 18:14:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




esterio пишет:
решил кастомним свойством
Но я не уверен что:
DeepVarvar пишет:
при повторной выборке его из DOM я получу ссылку на тот элемент который был найден ранее и увижу там кастомное св-во

Да, еще не проверял. Чую что вернет новый элемент.
teddy пишет:
по позициям если они не будут меняться
Будут.
teddy пишет:
с кастомным атрибутом
Этот свинарник на самый крайний вариант.
(Добавление)
И да, я не путаю где св-во, а где атрибут, это на всякий случай, если недопонимание возникнет.
 
 Top
teddy
Отправлено: 30 Ноября, 2014 - 18:30:27
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




DeepVarvar пишет:
Этот свинарник на самый крайний вариант.

Думаю ты преувеличиваешьУлыбка Вполне нормальная практика. Не вижу ничего плохого в кастомных атрибутах если они действительно нужны, как сейчас, например.

Как говорится, дешево и сердито.
(Добавление)
DeepVarvar пишет:
Да, еще не проверял. Чую что вернет новый элемент.

неверно чуешь Улыбка
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2014 - 18:35:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




teddy пишет:
неверно чуешь
Ну вот щас буду проверять. Если возвращает, то атрибуты не нужны. Ну и я так понял ты уже проверил - скажи в каком браузере и на какой оси.
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2014 - 18:45:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Проверил, работает. Осталось понять везде ли работает ))
Прикреплено изображение (Нажмите для увеличения)
test.jpg
 
 Top
teddy
Отправлено: 30 Ноября, 2014 - 18:47:24
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




В хроме ИЕ и файрфокс на виндоус 7

Ну вот)
 
 Top
nerv
Отправлено: 02 Декабря, 2014 - 22:01:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)






-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB