2013-09-30 6 views
0

Рассмотрим следующую разметку:комплекс 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 элементов, которые совершенно недостаточно, и я не хотел бы даже показать :)

+1

Кажется, что $ ('[data-something]: not (: has ([data-something]))) делает трюк, но я сейчас работаю в Dojo, который не поддерживает: has not обязательно о: нет). Есть идеи? – Alex

+1

В зависимости от вашей разметки вы можете попросить прямых детей из вашего корневого элемента. Например, если предположить, что ваш корень является телом: 'body> div [data-something]' –

+0

Вы всегда можете засыпать додзё. http://sizzlejs.com/ Это даст вам все причудливые селекторы, которые есть у jQuery. – jeremywoertink

ответ

-1

В том числе Шипения в Dojo работал.

Смежные вопросы