JQuery все, но не потомок определенного типа - PullRequest
1 голос
/ 03 декабря 2011

У меня есть следующая разметка,

<div custom="">
  <div>
     <template>
        <a custom="">  (anything inside template should not be selected)
        </a>
     </template> 
  </div>
</div>

<a custom=""></a>

Я хочу выбрать все элементы, которые имеют пользовательский атрибут, но не все, что находится внутри узла "шаблон".

Я попробовал следующее, но не работает,

$(":not(template *) [custom]")
$(":not(template) [custom]")
$(":not(template) *[custom]")
$(":not(template *)[custom]")
$(":not(template)").filter('[custom]')) // this does not work either...
$(":not(template,template *)").filter('[custom]')) // this does not work either...

Но это не работает. Любой более простой способ сделать это? Я не получаю никаких элементов в запросе.

Я знаю, шаблон не является стандартным html. Но мой собственный тег должен иметь правильный тег в html вместо переноса в нестандартный скрипт, где проверка разметки невозможна.

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Дайте этому шанс.

$('[custom]:not(template *)');

jsFiddle .

При этом выбираются все элементы с атрибутом custom (включая потомков template), а затем выбрасываются элементы, являющиеся потомками элемента template.

0 голосов
/ 03 декабря 2011

Попробуйте сначала сопоставить атрибут [custom], а затем селектор :not.

$("[custom] :not(template)")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...