javascript - Jquery View 元素应该在加载和滚动时工作

标签 javascript jquery scroll

我试图通过向元素添加一个类并在不查看时将其删除来使此查看功能正常工作。 不知道我错过了什么......请问有什么帮助吗?

http://jsfiddle.net/zefjh/

$.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));
};

$('.box').click(function () {
    alert($('.box').isOnScreen());
});

if ($('.box').isOnScreen() == true) {
    $('.box').addClass('inview');
}
$(window).scroll(function () {
    if ($('.box').isOnScreen() == true) {
        $('.box').addClass('inview');
    } else {
        $('.box').removeClass('inview');
    }
});

最佳答案

您可以使用$.each检查每个 .box ,无论它是否在屏幕上,都在滚动。

$.each($(".box"), function(){ if ($(this).isOnScreen()) { $(this).addClass('inview'); }<br/> else{ $(this).removeClass('inview'); } });

另外:您的点击函数应该使用this检查被点击的元素是否在屏幕上。

$('.box').click(function(){ alert($(this).isOnScreen()); });

最后:您可以离开 == true包含在 if 语句中。

完整示例:http://jsfiddle.net/zefjh/2/

关于javascript - Jquery View 元素应该在加载和滚动时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24286594/

相关文章:

java - JTable 按鼠标位置滚动

ios - Swift:防止 UITableViewCell 中带有文本的单元格在滚动后重新初始化

javascript - AJAX 是一种独立于 Javascript 的语言,还是一个 JavaScript 框架?

javascript - 在范围内更新 ng-repeat 循环数组后 View 未更新

javascript - 覆盖对象方法/函数

jquery - 更改输入元素的类型

javascript - 以编程方式更改复选框不会触发更改事件

Javascript 实例变量显示为未定义

jquery - bootstrap-typeahead 在 ios7 上需要点击 2 次才能选择

android - 当 NumberPicker 在 Android 中不滚动(按加号或减号按钮)时如何从 onValueChange 获取 NumberPicker 实例的值