jQuery:在插件成员函数中获取原始选择器

jQuery:在插件成员函数中获取原始选择器,jquery,plugins,Jquery,Plugins,我正在学习更多关于制作jQuery插件的知识,并且我正试图公开成员函数。我是通过我在一堆插件中看到的方法来实现的: $.fn.pluginName = function () { // $(this) contains the selector (#test) } $.fn.pluginName.publicFunction = function () { // How do I get $('#test') here? } $('#test').pluginName();

我正在学习更多关于制作jQuery插件的知识,并且我正试图公开成员函数。我是通过我在一堆插件中看到的方法来实现的:

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

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

$('#test').pluginName();
$('#test').pluginName.publicFunction();
我想知道如何访问在公共函数中选择主插件时使用的选择器,或者是否必须通过它才能使用它。有什么建议吗?我想我知道如何使用私有函数,但我对此有点不知所措


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

如果您想要为您的函数设置全局选择器(这就是您的意思),请执行以下操作:

window.publicSelector = privateSelector

然后从公共javascript代码中,应该可以使用jQuery插件函数内部的
publicSelector

来访问它:

this.selector
将是传递给原始jQuery对象的原始选择器。我不能确定,但这在最新版本的jQuery中可能会被弃用,尽管它仍然存在于jQuery2.0.2中

在此进行工作演示:


如果您试图从jQuery插件上的公共方法(如
$(“#test”).pluginName.publicFunction()访问jQuery实例(以获取原始选择器)在您的示例中,您不能

选择器是jQuery实例的属性,因此只有jQuery实例的方法或引用了jQuery实例的函数才能访问
.selector
属性

$('#test')。pluginName
是一个静态函数对象(例如,只有一个)-它不是jQuery实例,因此
$('#test')。pluginName.publicFunction()
无法访问
$('#test')
的属性,因此无法访问选择器

如果我理解你为什么要在jQuery插件上公开函数,以及你想用它做什么,我可能会为你提供另一种解决方案


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

的链接,我知道如何在主插件中获取选择器,我正在寻找如何在插件附带的公共函数中访问它。@RhoVisions-我已经根据您的最新评论在我的答案中添加了更多内容。谢谢,这基本上就是我所寻找的。我觉得这就是答案;我很高兴知道我的怀疑是正确的。谢谢这主要是关于实际使用的学习。
$.fn.test = function() {
    // this.selector contains #test from the original jQuery selector
};

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