jQuery从if语句获取“ this”

时间:2019-04-08 20:47:42

标签: javascript jquery

我正在尝试使用jquery从元素中获取唯一值,当我滚动到屏幕上的某个位置时,该值应该会出现。当元素出现在屏幕上时,postId 15应该可以到达jquery代码。

这是我的代码:

$(document).scroll(function() {
    if($("p.viewedPost").is(':onScreen')) {
        var postId = $(this).attr("postId");
        console.log("Element appeared on Screen " + postId);
    }
    else {
        console.log("Element not on Screen");
        //do all your stuffs here when element is not visible.
    }
});

问题是我有多个postId,所以我不能使用$("p.viewedPost").attr("postId");

它必须为$(this).attr("postId");

但是当我使用“ this”时,postId似乎是未定义的。那么我如何才能使$("p.viewedPost").is(':onScreen')拥有this

谢谢。

1 个答案:

答案 0 :(得分:0)

您正在寻找.filter().each()

$("p.viewedPost").filter(':onScreen').each(function () {
    var postId = $(this).attr("postId");
    console.log("Element appeared on Screen " + postId);
});

如果您插件的:onScreen选择器不能与.filter一起使用,则可以将测试放入each回调中:

$("p.viewedPost").each(function () {
    if (!$(this).is(':onScreen')) return; // skip
    var postId = $(this).attr("postId");
    console.log("Element appeared on Screen " + postId);
});