带有if条件的jQuery addClass

时间:2014-02-08 14:30:31

标签: jquery addclass

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

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

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

2 个答案:

答案 0 :(得分:7)

您也可以使用addClass函数参数,但有些人发现它的可读性较差:

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

答案 1 :(得分: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");
编辑:我对你的意图有疑问。第一个选择器中应该有逗号吗?