2014-07-15 60 views
0

我不明白爲什麼這不起作用。我基本上試圖添加一個類(.scroll)到任何.panel身體如果它高於320px。否則,請勿將.scroll類添加到.panel-body。基於元素高度的AddClass

我在做什麼錯?

我提供的的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

你需要做的是在每個循環是這樣的:

$('.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

+1

真棒皮特!謝謝 –

+0

@JosephSjoblom不要忘記將答案標記爲正確答案 – Regent

2

這是你去錯行:

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

它應該是:

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

也,你比較應該是if(panelBodyHeight > maxHeight)。感謝@Pete講述這一點。

Learn more about selecting elements & Updated Demo

+0

我曾嘗試過。該解決方案仍然不適合我。 –

+0

這是錯誤的,你還將'scroll'類添加到不大於最大高度的元素 – Pete

+0

@Pete是的,你的回答是正確的 – Regent