2013-10-23 29 views
0

我正在学习更多关于制作jQuery插件的知识,而我正在尝试使公共成员函数发挥作用。我通过我在一堆插件见过的方法做:jQuery:在插件成员函数中获取原始选择器

$.fn.pluginName = function() { 
    // $(this) contains the selector (#test) 
} 

$.fn.pluginName.publicFunction = function() { 
    // How do I get $('#test') here? 
} 

$('#test').pluginName(); 
$('#test').pluginName.publicFunction(); 

我不知道我怎么能访问在公共函数中选择主插件使用的选择,或者如果我有通过它来使用它。有什么建议?我想我知道如何用私人功能做到这一点,但是我对此感到有点不知所措。

前两个答案很明显我不清楚,所以问题已经更新。

回答

1

在函数内部可以访问一个jQuery插件功能:

this.selector 

将原始选择器传递给原来的jQuery对象。我无法确定,但这可能会在最新版本的jQuery中被弃用,尽管它仍然存在于jQuery 2.0.2中。这里

工作演示:

http://jsfiddle.net/jfriend00/JczB9/

$.fn.test = function() { 
    // this.selector contains #test from the original jQuery selector 
}; 

var item = $("#test"); 
item.test(); 

如果你正在试图获得访问jQuery的实例(以获得原始选择器)从公共方法上的jQuery插件如你的例子中的$('#test').pluginName.publicFunction();,你不能。

选择器是一个jQuery实例的属性,所以只有一个或多个jQuery实例的引用了jQuery实例的方法才能够访问.selector属性。

$('#test').pluginName是一个静态函数对象(例如有只是其中之一) - 这是不是一个jQuery的实例,以便$('#test').pluginName.publicFunction()没有访问的$('#test')的特性,因此不能去选择。

如果我明白你为什么在你的jQuery插件上做公用函数,以及你想用它做什么,我可能会为你提供一个替代解决方案。

例如,您的publicFunction()本身可能是一个jQuery插件方法,然后您可以使用链接,如$('#test').pluginName().publicFunction()

+0

我知道如何获得主插件中的选择器,我正在寻找如何在连接到插件的公共函数中访问它。 – RhoVisions

+0

@RhoVisions - 我根据您的最新评论添加了更多内容。 – jfriend00

+0

谢谢,这基本上是我在找的东西。我有一种感觉,这就是答案。我很高兴我知道我的怀疑是正确的。谢谢!这主要是关于实际使用的学习。 – RhoVisions

0

,如果你想为你的功能的全局选择(是你的意思),你这样做:

window.publicSelector = privateSelector 

然后从公共javascript代码,应该使用publicSelector

相关问题