#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); }1231werjhwer8798794 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") } ) )1231werjhwer8798794 34На css пока ничего подобного нет, так что только фильтровать. Ну и осторожнее, если селектор внутри has составной.
Комментариев нет:
Отправить комментарий