2014-02-08 45 views
5

如果图像的高度小于包含div的高度,我试图给图像添加一个类。但是,如果一个图像小于包含框,jQuery会将该类添加到所有图像。我如何让jquery只将类添加到比包含div小的图像?jQuery addClass if条件

我有使用jQuery的经验。这是我在jQuery中写的第一个代码。

$('.expositie, .right img').each(function(){ 
    if ($(".expositie").height() > $(".right img").height()) { 
    $(".right img").addClass("toggle"); 
    } 
}); 
+0

你肯定应该有你的第一选择一个逗号?我并不确定这个意图。 –

回答

5

你可以使用addClass函数参数太多,有些人觉得它的可读性,但:

$('.expositie').find('.right img').addClass(function(){ 
    return $(this).closest(".expositie").height() > $(this).height() ? "toggle" : ""; 
}); 
1

像这样:

$('.expositie, .right img').each(function(){ 
    if ($(this).closest(".expositie").height() > $(this).height()) { 
     $(this).addClass("toggle"); 
    } 
}); 

closest让你找到第一个封闭元素验证指定选择。

你也可以使用filter,我觉得更清晰:

$('.expositie, .right img').filter(function(){ 
    return $(this).height()<$(this).closest(".expositie").height() 
}).addClass("toggle"); 

编辑:我有一个关于你的意图的怀疑。第一个选择器中是否应该有一个逗号?

+0

谢谢!我很感激。 – user3140559