如果div高度改变,jQuery addClass

时间:2013-08-06 19:25:14

标签: jquery

我有一个div,里面有一个可扩展的列表。 div的最大高度为450px,因此列表不会超出该范围。我在div上有一组箭头,在点击时向上和向下滚动div,但是只有当它的高度达到450px时我才需要向div添加/向下箭头。这是我到目前为止所拥有的......

<script type="text/javascript">
$("#sidebar-container").addEventListener("overflow", function(){
if($("#sidebar-container").height() == 450) {
    $('.sidebar-arrow-up').addClass('arrow-show');
    $('.sidebar-arrow-down').addClass('arrow-show');
}
else{
    $('.sidebar-arrow-up').removeClass('arrow-show');
    $('.sidebar-arrow-down').removeClass('arrow-show');
}
},false);
</script>

我尝试过点击事件,但是需要这个来检查div的高度而没有用户驱动的事件。

link:http://shamounwp.theinfiniteclients.com/procedures/breast/types-of-procedures/choiceswhich-one-is-right-for-me/

2 个答案:

答案 0 :(得分:1)

因此,通过查看网站,看起来div只会在您单击列表元素时更改大小。我认为你最好的选择就是创建一个像这样的函数

function checkSize(){
  if($("#sidebar-container").height() == 450) {
    $('.sidebar-arrow-up').addClass('arrow-show');
    $('.sidebar-arrow-down').addClass('arrow-show');
  }
  else{
    $('.sidebar-arrow-up').removeClass('arrow-show');
    $('.sidebar-arrow-down').removeClass('arrow-show');
  }
}

然后为每个列表元素添加一个类,例如.list-element,然后在window.load()或document.ready()中添加类似的内容:

$('.list-element').click(function (){
  checkSize();
});

您也可以在页面加载开始时调用此函数一次,以便它也检查初始大小

$(document).ready(function(){
  checkSize();

  //additional page code
});

这将在开始时调用函数一次最初添加箭头(如果需要)然后每次单击带有'list-element'类的项目,这将是您的列表元素,导致您的div改变高度

答案 1 :(得分:0)

您需要使用overflow: auto。当元素内容的高度超过元素的最大高度时,只会在div上放置一个滚动条。

所以在你的css中:

#sidebar-container {
    max-height: 450px;
    overflow: auto;
}