$(this)在if($(".element")中不起作用.是()

big*_*rge 0 javascript jquery

我对下面代码的预期结果是.csr-area-3 .csr-video添加了类csr-animate csr-zoom-in,为什么$(this)在这种情况下不起作用?

if ($(".csr-area-3 .csr-video").is(":in-viewport")) {
    $(this).addClass('csr-animate csr-zoom-in');
}
Run Code Online (Sandbox Code Playgroud)

KAD*_*KAD 7

因为上下文是调用者函数/事件或可能是全局窗口上下文,所以再次使用相同的选择器以添加类:

if ($(".csr-area-3 .csr-video").is(":in-viewport")) {
    $(".csr-area-3 .csr-video").addClass('csr-animate csr-zoom-in');
}
Run Code Online (Sandbox Code Playgroud)

从评论中编辑

使用变量存储jquery查找的结果:

var csrvideo = $(".csr-area-3 .csr-video");
if (csrvideo.is(":in-viewport")) {
    csrvideo.addClass('csr-animate csr-zoom-in');
}
Run Code Online (Sandbox Code Playgroud)

注意:使用filter作为@ saptal的答案将确保在存在多个元素的情况下将类添加到视口内的元素.