$(this)在if ($(".element").is()中不起作用
$(this) not working within if ($(".element").is()
我对下面代码的预期结果是.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');
}
因为上下文是调用者函数/事件或全局窗口上下文,所以再次使用相同的选择器来添加类:
if ($(".csr-area-3 .csr-video").is(":in-viewport")) {
$(".csr-area-3 .csr-video").addClass('csr-animate csr-zoom-in');
}
编辑注释
使用一个变量来存储jquery查找的结果:
var csrvideo = $(".csr-area-3 .csr-video");
if (csrvideo.is(":in-viewport")) {
csrvideo.addClass('csr-animate csr-zoom-in');
}
注意:使用filter作为@saptal的答案将确保在存在多个元素的情况下将类添加到viewport内的元素。
您需要.filter(function)
,以获得匹配的元素,这是在视图端口,然后添加类到它
$(".csr-area-3 .csr-video").filter(function() {
return $(this).is(":in-viewport");
}).addClass('csr-animate csr-zoom-in');
也可以用
$(".csr-area-3 .csr-video:in-viewport").addClass('csr-animate csr-zoom-in');
如果只使用
$(this).someFunction();
this
为window
对象。
你需要做
$(".csr-area-3:in-viewport").addClass('csr-animate csr-zoom-in');
$(".csr-video:in-viewport").addClass('csr-animate csr-zoom-in');
(取决于你实际想要什么)
相关文章:
- 在我的代码中,实体类"卡片展示”;不起作用
- "浮动“;父DIV底部的DIV不起作用.(使用Pos:rel、Bottom 0等)
- jQuery mCustomScrollbar"滚动到“;不起作用
- "如何使用jQuery's form.serialize但排除空字段"不起作用(使用php)
- 逻辑“>"以及“<"在Jquery函数内部不起作用
- "href"JavaScript Android中的链接不起作用
- 在Jquery.css({height:"300px!important"!})中不起作用.JQuer
- HTML/JavaScript”;if!="不起作用
- 请帮忙"数据ng控制器”;不起作用
- jQuery"滑动下降”;动画不起作用
- 主路由器在路由“”的末尾附加一个#"导致dom中引用锚点在Backbone/Require应用程序中不起作用
- 我的javascript"幻灯片放映”;不起作用
- "document.getElementById”;不起作用
- Titanium Javascript:“;那"不起作用
- javascript addEventlistener"点击“;不起作用
- 引用类内的变量..当“;这个"不起作用,因为我们处于函数中
- 为什么jquery"改变“;事件在我的示例中不起作用
- "如果x〃;工作-“;如果x或!y”;不起作用
- "指针事件:无”;在IE9和IE10中不起作用
- 圣经般的"Sortable.create()"方法在进行AJAX调用以更新无序列表后不起作用