我有一个不错的jQuery链,像这样:
$(...)
.method1()
.method2()
.method3()
...;
现在我看到我想用运行
.method2()
或.method2a()
的条件替换.method2b(p1)
。实际上,我想这样做:$(...)
.method1();
if (cond)
$(...).method2a()
else
$(...).method2b(p1)
$(...)
.method3()
...;
但这很丑-打破了美丽的链条!
因此,我正在寻找jQuery API方法XYZ,该方法将允许我在链中运行自己的函数!所以它看起来像这样:
$(...)
.method1()
.XYZ(function () {
if (cond)
this.method2a()
else
this.method2b(p1);
})
.method3()
...;
因此,是否有任何jQuery方法XYZ允许这样做?最接近此值的是
.each
,但我不想为每个元素单独运行它! 最佳答案
我真的很讨厌我要告诉你的内容,而且我认为这很丑陋,但是您可以使用:
$(...)
.method1()
[cond ? 'method2a' : 'method2b']()
.method3();
第二种解决方案:
将此代码添加到您的文件中
(function($){
if(!$.fn.if)
$.fn.if = function(cond, trueFn, falseFn){
if(cond)
trueFn.call(this);
else
falseFn.call(this);
return this
}
})(jQuery)
编辑:格式化
这将使您可以使用功能
.if()
,它可以像这样使用:$('body').if(cond,
function(){
this.addClass('a')
},
function(){
this.addClass('b')
})
关于javascript - 简单功能的jQuery方法执行吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19664678/