jQuery所有但不是特定类型的后代

时间:2011-12-03 11:41:10

标签: jquery jquery-selectors

我有以下标记,

<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 个答案:

答案 0 :(得分:2)

给这一点。

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

jsFiddle

这将选择具有custom属性的所有元素(包括template的后代),然后抛弃作为template元素后代的元素。

答案 1 :(得分:0)

首先尝试将[custom]属性与:not选择器匹配。

$("[custom] :not(template)")