使用jQuery检查元素的每个div并应用“if”语句

时间:2012-03-15 17:45:41

标签: jquery

我正在尝试检查页面并找到没有图像的div,并相应地更改该div中元素的类。页面是动态生成的,所以我需要检查每个元素。代码本身适用于影响所有div,但我需要检查每个div,只影响带图片的那些。

HTML:

<div class="container"><img width="695" height="519" src="pic123.jpg" /><div class="arrow"></div><!--arrow--></div><!--container-->
<div class="container"><div class="arrow"></div><!--arrow--></div><!--container-->

jQuery:

$('.container').each(function(){
if ($(this).has("img")){
$('.arrow').addClass('classone');
};
});

4 个答案:

答案 0 :(得分:4)

您不需要if语句:

$(".container:has(img) .arrow").addClass("classone");

或者你可以尝试这个版本:

$(".container").filter(":has(img)").find(".arrow").addClass("classone");

答案 1 :(得分:1)

尝试:

$('.container').each(function(){
    if ($(this).has("img")){
        $('.arrow',this).addClass('classone');
    };
});

$(this).find('.arrow').addClass('classone');也可以使用

答案 2 :(得分:0)

根据我的理解,它应该可以正常工作如果你只是改变

$('.arrow').addClass('classone');

$('.arrow', this).addClass('classone');

或尝试使用.has,如下所示

$('.container').has('img').find('arrow').addClass('classone');

答案 3 :(得分:0)

这应该可以解决问题:

$('.container').each(function(){
   if ($("img", this).length > 0){
      $('.arrow', this).addClass('classone');
   };
});