如果列表项包含x元素,则添加类

时间:2012-10-26 13:16:14

标签: jquery css

快速得到一个,希望如此。我在下面列出了这两个列表项。 royalHtmlContent的字体颜色是灰色的,但如果在royalSlide列表项中有royalImage,我需要字体颜色为白色。

<li class="royalSlide" style="height: 420px; width: 610px; ">
<div class="royalHtmlContent">Text</div>
</li>

<li class="royalSlide" style="height: 420px; width: 610px; ">
<img class="royalImage" src="#" width="610" height="420" style="margin-left: 0px; margin-top: 0px; ">
<div class="royalHtmlContent royalHtmlContentOverlay">Text text text</div>
</li>

我尝试了这个,但是它不起作用......它只是将所有类型(将具有白色字体颜色的样式)应用于所有royalHtmlContent。只有在列表中也有royalImage时我才需要这样做。

if ($('.royalSlide').has('.royalImage')) {
    $('.royalHtmlContent').addClass('royalHtmlContentOverlay');
}

提前致谢, [R

2 个答案:

答案 0 :(得分:2)

您的代码无法正常工作(优先级)

  • jQuery选择alwyas返回一个选择,从不返回假值,因此始终满足条件
  • if中使用的选择与if中的选择无关。

首先选择图像。如果选择为空,则链的其余部分将不执行任何操作

$(".royalSlide > .royalImage").next("div.royalHtmlContent")
                              .addClass('royalHtmlContentOverlay');

答案 1 :(得分:1)

$('img.royalImage').next('div.royalHtmlContent').addClass('royalHtmlContentOverlay');

认为这也可能有用吗?基本上只是寻找所有的,如果那里有一个,在div中添加一个类,你可以用css来设置它。