如何使div的可见性取决于对象的scrollHeight和height属性?

时间:2012-03-02 20:22:26

标签: javascript jquery

我已经实现了一些在鼠标悬停时向上和向下滚动的div。但是,如果没有滚动,我想让这些div消失。我试图通过比较容器的scrollHeight和容器的实际高度来做到这一点。如果匹配,我希望悬停滚动div的'visibility'属性为'hidden'。

这是我的代码。我错过了什么?

$(function () {
if ($('#container').scrollHeight() == $('#container').height()) {
    $('.HoverScrollUp,#HoverScrollDown').css('visibility': 'hidden');
    }
})

(是的,.HoverScrollUp应该是一个类,而不是一个ID。)

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

  

scrollHeight是DHTML对象模型的属性,它是第一个   由MSIE介绍。它被称为元素的高度   物理滚动视图。 MDN

由于它是属性而非方法,因此调用.scrollHeight()并不起作用。根据qwertymk的例子,您必须像属性一样访问它。请注意,它不能在IE7中工作。我建议不要完全使用它。

.css('visibility': 'hidden');还存在语法问题:应为,

尝试以下代替scrollHeight

if ($('#HoverScrollDown').outerHeight() < $('#container').innerHeight()) {
    $('.HoverScrollUp,#HoverScrollDown').css('visibility', 'hidden');
}else if ($('#HoverScrollDown').outerWidth() < $('#container').innerWidth()) {
    $('.HoverScrollUp,#HoverScrollDown').css('visibility', 'hidden');
}

Fiddle

答案 1 :(得分:0)

尝试使用if语句:

if ($('#container')[0].scrollHeight === $('#container').height())

虽然你应该缓存查询:

$(function () {
    var $container = $('#container');

    if ($container[0].scrollHeight === $container.height()) {
        $('.HoverScrollUp,#HoverScrollDown').css('visibility': 'hidden');
    }
});

不要问我为什么会这样,在我看到这个问题之前我遇到了同样的问题,也许这是jQuery中的一个错误?