Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Как записать правильно вот такой селектор JavaScript [не jQuery]

#javascript


Хотелось бы записать вот такой селектор:

document.querySelectorAll(".smallinnertable:not(:has(a))");


На jQuery работает, а на чистом JS нет. Такой селектор очень нужен. Спасибо за помощь.
    


Ответы

Ответ 1



Вряд ли что-то есть прям в точности легкое и простое. Ведь даже на Jquery написан хорошенький и хитрый фильтр для селекторов. Поэтому, как вариант, написать что-то самому. Например что-то подобное: function getElementHasNotAnother(selector, filterEl) { var divs = document.querySelectorAll(selector), filter = Array.prototype.filter; return filter.call( divs, function( node ) { return node.querySelectorAll(filterEl).length == 0; }); } var result = getElementHasNotAnother('.smallinnertable', 'a'); /*********** check *************************/ for (var el in result) { console.log(result[el].textContent); }
1231
werjhwer
879879
4 34


Ответ 2



document.querySelectorAll(".smallinnertable:not(:has(a))"); Сначала надо выбрать .smallinnertable, а потом выкинуть из них все те, в которых есть a: console.log( Array.prototype.filter.call( document.querySelectorAll(".smallinnertable"), function (el) { return !el.querySelector("a") } ) )
1231
werjhwer
879879
4 34
На css пока ничего подобного нет, так что только фильтровать. Ну и осторожнее, если селектор внутри has составной.

Комментариев нет:

Отправить комментарий