我有一个不错的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/

10-12 12:53
查看更多