2014-07-10 65 views
1

反正有一个jQuery函数的范围限制到比使用主要功能以外的对象:有没有办法将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(); 

回答

1

有真的不是很多很好的理由,试图做到这一点:

$(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(); 

而且,this指针myLibFunc1将是jQuery对象调用它。

+0

Yuup这就是我的目标(仍然能够访问'这')。我会坚持选择(mylibFunc1();) – user3718546

0
(function($) { 
$.fn.myLib = function(funcName) { 
    var obj=new Object 
    obj.func1=function() {alert('first')} 
    obj.func2=function() {alert('second')} 
    return obj 

}; 
}(jQuery)); 
相关问题