Рассмотрим следующую разметку:комплекс JavaScript DOM запрос
<div data-something="something">
<div>
<div>
<div data-something="something">
<div data-something="something"></div>
</div>
</div>
</div>
</div>
<div data-something="something"></div>
Я хотел бы запросить (не обязательно, но желательно с помощью одного запроса) все элементы, которые не имеют никаких детей с атрибутом «данных с чем-то» , Другими словами, я хотел бы запросить все элементы верхнего уровня, которые имеют этот атрибут. Обратите внимание, что все эти элементы не обязательно являются непосредственными потомками корневого элемента.
Таким образом, запрос должен в этом случае производить два элемента. Первый и последний. Оба двух ребенка первого элемента должны быть опущены.
Лучший подход, который я мог думать занимает около пяти секунд, чтобы обработать 300 элементов, которые совершенно недостаточно, и я не хотел бы даже показать :)
Кажется, что $ ('[data-something]: not (: has ([data-something]))) делает трюк, но я сейчас работаю в Dojo, который не поддерживает: has not обязательно о: нет). Есть идеи? – Alex
В зависимости от вашей разметки вы можете попросить прямых детей из вашего корневого элемента. Например, если предположить, что ваш корень является телом: 'body> div [data-something]' –
Вы всегда можете засыпать додзё. http://sizzlejs.com/ Это даст вам все причудливые селекторы, которые есть у jQuery. – jeremywoertink