假设我有以下jQuery:
// pseudocode :
$(this)
.doSomething
.doSomething
.selectSomething
.doSomething
.animate({
opacity: 1
}, 150)
.end()
.selectSomethingElse
.doSomething
我想要执行上述操作。但是,如果浏览器是IE,我不希望动画部分执行(由于IE无法使用透明PNG动画对象并保留PNG透明度)。
无论如何都要维护漂亮的链式jquery语法,但不知何故基于某些if逻辑跳过动画部分(在这种情况下测试IE)?
答案 0 :(得分:6)
你可以做一个each()
并向它传递一个处理动画的函数,它应该可以工作。
$(this)
.doSomething
.doSomething
.selectSomething
.doSomething
.each(function() {
// Will return false on IE, true on others
if(jQuery.support.opacity) {
$(this).animate({
opacity: 1
}, 150);
}
})
.end()
.selectSomethingElse
.doSomething
答案 1 :(得分:1)
您可以使用filter
过滤IE:
$(this).filter(function() {
return $.support.opacity;
}).animate({
opacity: 1
}, 150);
答案 2 :(得分:0)
我之前有一段代码检查IE,如果找到,则删除第一个“.selectSomething”正在使用的选择器。或者,稍微修改.selectSomething,以便检查仅存在于非IE浏览器中的其他类。
它有助于保持浏览器检测逻辑的独立性。