как ссылаться на дочерний элемент на клонированном элементе

1

Я выполняю некоторые тесты на элементе DOM, результат тестов является одним из потомков элементов. например:

<div id="myelement" class="some-class">
  <div class="some-child-class"></div>
  <div class="some-other-child-class">
    <div class="grandchild-class"></div>
    <div class="another-grandchild"></div>*
  </div>
</div>

допустим, что:

test(document.getElementById('myelement'));

вернет элемент, отмеченный звездочкой

Теперь моя проблема: процедура тестирования тяжелая и ресурсоемкая. Я не хочу запускать его, когда мне это не нужно. И иногда я клонирую элемент, который уже был протестирован (что означает - я KNOW результат теста), но поскольку я получаю ссылку на объект, в результате я не могу использовать его для доступа к соответствующему ребенку на клонированном элементе,

Существует ли какой-либо эффективный способ "сохранить" относительный путь от родительского элемента к определенному потолочному элементу DOM и затем применить его к другому элементу?

Теги:
element
path

2 ответа

0

Таким образом, вы можете назначать уникальные идентификаторы для каждого элемента и кэшировать результаты теста в объекте на элементе id. Однако я не знаю, полезно ли это. Пример реализации:

var test=function(el){
  return this[el.id] || (this[el.id]=advancedtesting(el));
}.bind({});

Таким образом, вы можете сделать:

test(document.getElementById('myelement'));//caches
test(document.getElementById('myelement'));//returns the cached
-1

Вы можете использовать jQuery для этого.

Селекторы, которые они используют, могут иметь форму "nth-child" или "nth-of-type" (см. Документацию здесь).

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

$('#myelement').find('div:nth-child(2) > div:nth-child(2)')

Это означает, что в качестве базы, на которой вы начнете поиск, требуется # myelement, а затем он переходит ко второму дочернему элементу, который является div, и снова в этот дочерний элемент div. Вы можете повторно использовать этот селектор с другой базой.

  • 0
    Пожалуйста, не рекомендуется использовать jQuery, если он не помечен и не упоминается в самом вопросе.
  • 0
    Похоже, что OP хочет повысить скорость тестов, выполняющихся всего за несколько мс, и введение другой библиотеки, вероятно, не поможет ускорить тестирование.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню