javascript - 我如何使用 jQuery 的这个对象?

标签 javascript jquery

我正在构建一个主题,并且仅当该元素在浏览器的视口(viewport)中可见时,我才喜欢为该元素运行一些代码。为了实现这一目标,我找到了这段代码,但我不确定如何使用它:

$.fn.isOnScreen =   function()
{
    var win =   $(window);
    var viewport    =   {
        top  : win.scrollTop(),
        left : win.scrollLeft()
    };

    viewport.right  =   viewport.left   +   win.width();
    viewport.bottom =   viewport.top    +   win.height();

    var bounds      =   this.offset();

    bounds.right    =   bounds.left + this.outerWidth();
    bounds.bottom   =   bounds.top + this.outerHeight();

    return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
};

我已经尝试过这种方法:

$(this).isOnScreen().css('color', '#0AF');

但是我在控制台中收到错误 Uncaught TypeError: undefined is not a function

有人可以帮助我使用这个方法吗?我该如何使用它?

最佳答案

isOnScreen() 函数返回一个 bool 值,而不是 jQuery 对象,因此您无法从中链接 jQuery 方法。试试这个:

if ($(this).isOnScreen()) {
    $(this).css('color', '#OAF');
}

此外,我不明白仅在屏幕上时更改某物的颜色的意义 - 如果它在屏幕外,则看不到它,因此它只会被视为一种颜色。

关于javascript - 我如何使用 jQuery 的这个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23883413/

相关文章:

javascript - 如何在不使用 FormData 的情况下在 ajax 调用中添加文件数据?

javascript - 如何计算内部有一些文本和固定宽度的div的高度

javascript - 在 Controller 的 div 中显示图像?

javascript - SASS (CSS) 逻辑与 JQuery(Javascript) 逻辑

javascript - 如何防止超时函数运行两次

javascript - react-hot-loader 在 create-react-app 中的 styled-components css 发生变化后不更新

javascript - 读取单选按钮的值时,值未定义

javascript - 如何使用 Jquery 定位父级 sibling 的子级的单个实例?

javascript - 是否可以使用 Javascript 在页面刷新时随机生成预先确定的链接颜色和悬停颜色?

jquery - 使用 selectpicker 时下拉列表显示两个下拉列表