как запустить .click на селекторе родительских братьев Elems? - PullRequest
0 голосов
/ 26 мая 2020

Ниже представлена ​​моя последняя попытка:

var aSl = document.querySelector('input[id^="blahblah"]');
aSl.closest("span.k-icon.k-i-expand").click();

Возвращено:

my js. js: 181 Uncaught TypeError: невозможно прочитать свойство 'closest' of null

Я также пробовал parent.sibling вместо .closest выше - это возвращало '... родительская ошибка не является функцией'.

Ниже моя разметка:

<span class="k-icon k-i-expand">::before</span> <--- this is what I'm trying to run .click() on
<span class="k-checkbox-wrapper">
   <input type="checkbox" tabindex="-1" id="blahblah-blah" class="k-checkbox">
<span>...</span>
</span>

Обновите, я тоже только что пробовал; за безрезультатный комментарий:

var el = document.querySelector('input[id^="blahblah"]');
el.parentNode.parentNode.click();

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Метод closest () проходит по элементу и его родительским элементам (в направлении документа root) до тех пор, пока не найдет узел, соответствующий предоставленной строке селектора. Вернет себя или соответствующего предка. Если такого элемента не существует, возвращается значение null.

То, что вы хотите получить, на самом деле является родственником родительского элемента aS1 , следовательно, результат равен нулю.

Вы получил бы желаемый элемент, если бы код был таким.

<span class="k-icon k-i-collapse">
   ::before
   <span class="k-checkbox-wrapper">
        <input type="checkbox" tabindex="-1" id="blahblah-blah" class="k-checkbox">
        <span>...</span>
   </span>
</span> 

Также обратите внимание, что не было родительского элемента с именем класса 'ki-collapse'.

0 голосов
/ 26 мая 2020

Как сказано в комментарии, похоже, вы смешиваете API jquery с DOM API, придерживайтесь одного из них, и вы получите результат (при условии, что селектор для blahblah действительно находит объект)

...