Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Много parentNode (https://javascript.ru/forum/dom-window/39808-mnogo-parentnode.html)

zzzzzz 12.07.2013 20:34

Много parentNode
 
var id = _this.parentNode.parentNode.parentNode.parentNode. id;

у кнопки есть родитесь td у него tr у него table у него div
беру у дива id

Как сократить такую запись

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

рони 12.07.2013 21:38

zzzzzz,
на квери это выгляделобы так
$(this).parents('div:first').attr('id')

Можно ли сократить такую запись
Цитата:

Сообщение от Aetae (Сообщение 136469)
Свою функцию parent сдаелать и всё.

Что-то типа:
function parent(node,n){
  while(n--&&(node=node.parentNode));
  return node
}

Хотя если случай единичен - оно не оправдано.
И вообще, по-хорошему, таких конструкций надо избегать.


danik.js 12.07.2013 21:39

Цитата:

Сообщение от zzzzzz
Как сократить такую запись

Пересмотреть архитектуру приложения, подойти к проблеме с другой стороны. Ну а на край написать вспомогательную функцию.

zzzzzz 13.07.2013 00:24

Спасибо

danik.js 13.07.2013 08:06

Цитата:

Сообщение от рони
на квери это выгляделобы так

А помоему так:
$(this).closest('div').prop('id')

рони 13.07.2013 08:52

danik.js,
и так и эдак :write:

danik.js 13.07.2013 10:16

Цитата:

Сообщение от рони
и так и эдак

Хм. Действительно. Правда closest помоему делает меньше работы. Вот только не помню поиск начинается от самого this или от его родителя..

рони 13.07.2013 11:20

danik.js,
да closest лучше потому что это сокращённая запись parents('div:first') , atrr или prop не так важно но для строк рекомендуют attr

danik.js 13.07.2013 12:13

Цитата:

Сообщение от рони
atrr или prop не так важно но для строк рекомендуют attr

Не не. Как раз таки рекомендуется использовать prop нежели attr. Допустим с атрибутом value ситуация не однозначная. Атрибут хранит начальное значение, тогда как свойство - текущее. Конечно же корректнее использовать свойство нежели атрибут. Также подозреваю имеется и разница в скорости.


Часовой пояс GMT +3, время: 12:28.