无论如何,除了使用main函数之外,是否有将jquery函数的范围限制为对象的方法:

(function( $ ) {

    $.fn.myLib = function( funcName ) {

        if ( action === "func1") {
            // Open popup code.
        }

        if ( action === "func2" ) {
            // Close popup code.
        }

    };

}( jQuery ));


我想这样做,以便可以调用如下函数:

$(el).myLib.func1();
$(el).myLib.func2();

最佳答案

确实没有太多理由尝试这样做:

$(el).myLib.func1();


因为执行this时的func1()指针将是myLib,因此您将无法访问$(el)。因此,除非您只想使用静态方法,否则它不会带来很多好处。如果那是您真正想要的,则可以执行以下操作:

$.fn.myLib = {};
$.fn.myLib.func1 = function(...) {...};
$.fn.myLib.func2 = function(...) {...};


如果您实际上希望能够访问jQuery对象(我认为是),那么请坚持使用一个级别并使用名称前缀,无论如何,它都会为您提供相同级别的名称冲突保护。

$.fn.myLibFunc1 = function(...) {...};
$.fn.myLibFunc2 = function(...) {...};


然后,您可以执行以下操作:

$(el).myLibFunc1();


并且,myLibFunc1中的this指针将是调用它的jQuery对象。

关于javascript - 有没有办法将一个jQuery函数包装到一个对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24688146/

10-11 05:07