jQuery如何在if语句中使用on()
我有一个if语句,目前运行良好:jQuery如何在if语句中使用on(),jquery,delegates,live,addclass,Jquery,Delegates,Live,Addclass,我有一个if语句,目前运行良好: if ($('div').hasClass('is-sticky')) { $('body').addClass('has-sticky'); } 但是,类“.is sticky”是从不同的jQuery插件动态添加到标记中的。所以我发现我需要使用on(),以便不断监视该类的添加或删除。但是我不知道如何在当前的if语句中使用on() 我想观察动态添加和删除“.is sticky”,然后在主体中添加“.has sticky”类 谢谢 .on()用于将事件处理程
if ($('div').hasClass('is-sticky')) {
$('body').addClass('has-sticky');
}
但是,类“.is sticky”是从不同的jQuery插件动态添加到标记中的。所以我发现我需要使用on(),以便不断监视该类的添加或删除。但是我不知道如何在当前的if语句中使用on()
我想观察动态添加和删除“.is sticky”,然后在主体中添加“.has sticky”类
谢谢 .on()
用于将事件处理程序绑定到选择器,该选择器的匹配元素可能会动态更改。但是您没有绑定事件处理程序(当类被更改时不会触发事件),所以在这种情况下没有帮助
您可以使用setInterval()
定期检查并更新类:
setInterval(function() {
$('body').toggleClass('has-sticky', $('div').hasClass('is-sticky'));
}, 1000);
您不能使用.on()
监视何时从DOM对象添加或删除类。jQuery不提供这种功能
当类被修改时,您可以尝试查看以下内容:
为什么不在每次添加时创建一个自定义触发器呢?sticky类是元素吗 触发器处理程序类似于:
$('body').on('classAdded', function() {
$(this).addClass('has-sticky');
});
触发块如下所示:
function whatever() {
// logic that adds the class to $('div') .......
// at this point, your $('div') has the is-sticky class already right?
$('body').trigger('classAdded');
}
触发器块将类似于调用处理程序的任何其他事件,如click/mouseenter。虽然这也可以是一个函数调用….这可能有点麻烦,但是您可以为
是sticky
类定义一个非常短的CSS转换,然后绑定到transitionend
事件。使用它,您应该能够知道该特定类是何时添加到IE10+和evergreen浏览器中的
不,这不是上的
的目的……因为已经确定,您不能监视这样的类(至少不能没有变异的观察者),您通过监视该类实际想要实现什么?也许有人可以建议一个更好的方法。我想做的是观察类“.is sticky”动态添加到div。如果该类存在,那么我的jQuery将向body标记添加一个类。我原以为live()
现在和将来都可以监视选择器,既然这样做毫无意义,我原以为on()
就可以了。谢谢live()
描述为:现在和将来为匹配当前选择器的所有元素附加一个事件处理程序。所以我认为on()
应该能够匹配将来添加的选择器,因为据说它已经取代了live()
我不是一个JS人,所以我只知道如何使用jQuery。任何其他的建议,以实现我想要的将是有益的。谢谢@Mark.C-.on()
为“单击”、“按键”或“鼠标移动”等事件注册事件处理程序。。。。更改DOM对象上的类不会导致任何类型的事件,因此,.on()
在监视类更改时没有任何用处。如果浏览器有一个事件调用classChanged
,当类被修改时,该调用会在任何DOM对象上触发,那么你就可以使用.on(“classChanged”)
,但这样的事情是不存在的。