AddClass基于元素高度

时间:2014-07-15 15:08:23

标签: jquery height addclass

我无法弄清楚为什么这不起作用。我基本上试图将类(.scroll)添加到任何.panel-body,如果它高于320px。否则,请不要将.scroll类添加到.panel-body。

我做错了什么?

我提供了一个jsfiddle:

var maxHeight = 320;
var panelBody = $(this).('.panel-body');
var panelBodyHeight = panelBody.height();

if ( maxHeight < panelBodyHeight ) {
   panelBody.addClass('scroll');
}
else { 
   panelBody.removeClass('scroll');
}

http://jsfiddle.net/8sMX4/1/

2 个答案:

答案 0 :(得分:2)

这是你出错的地方:

var panelBody = $(this).('.panel-body');

应该是:

var panelBody = $('.panel-body'); 

此外,您的比较应为if(panelBodyHeight > maxHeight)。谢谢@Pete告诉了这一点。

Learn more about selecting elements&amp; Updated Demo

答案 1 :(得分:2)

您需要在每个循环中执行此操作:

$('.panel-body').each(function() {
    panel = $(this);
    if (panel.outerHeight() > maxHeight) {
        panel.addClass('scroll');
    } else {
        panel.removeClass('scroll');
    }
})

Example

或者您可以使用过滤器:

$('.panel-body').filter(function() {
    return $(this).outerHeight() > maxHeight;
}).addClass('scroll');

Example