CSS img不是直接的孩子

时间:2016-02-04 17:31:21

标签: css css-selectors

我想选择var v = {}; $('#' +formId).find('select, input, textarea'). each(function (){ var tmp; if($(this).attr('type') == 'checkbox' || $(this).attr('radio') == 'checkbox') { tmp = $(this).is(':checked')?1:0; }elseif($(this).attr('type') == 'submit'){ return; }else{ tmp = $(this).val(); } v[$(this).attr('id')] = tmp; }); img的{​​{1}}孩子而不是标记#boardMostra的直接孩子。

我试过了:

a

但它没有用。

2 个答案:

答案 0 :(得分:4)

您可以使用的唯一方法是在#boardMostra img上设置属性并在#boardMostra a > img上将其中和。

一个例子

<div>
    <img src="#" alt="#">
    <a href="#"><img src="#" alt="#"></a>
</div>

div img { margin: 10px 20px; }
div a > img { margin: 0; }

<强>解释

为什么您的示例代码不起作用:

  

CSS中的not(X)属性是一个否定伪类并接受一个   简单的selector1作为参数。基本上,只是另一个选择器   任何一种。

     

:不匹配参数未表示的元素。的的   传递的参数可能不包含附加选择器或任何   伪元素选择器。

来源:https://css-tricks.com/almanac/selectors/n/not/

答案 1 :(得分:0)

解决方案:

#boardMostra > img , #boardMostra :not(a) > img { ... }

第一部分涉及#boardMostra的直接后代<img>

第二部分引用#boardMostra中所有与{em> <img>

一样的直接后代的所有<a>

查看示例: https://jsfiddle.net/t4snrgz6/

为什么我认为这比公认的答案要好

有些时候,您不想手动写出替代集的CSS。例如,我使用的插件具有<code>元素的直接后代的<pre>元素一堆CSS。我想设置<code>不是<pre> 的直接后代的元素的样式,而不会弄乱插件的CSS 。我的解决方案允许我使用:not(pre) > code