请考虑以下代码。在这里,我有一个 jquery 插件myPlugin
,我使用它更改了#targetElement
的 UI
var myPluginVar = $('#targetElement').myPlugin();
我创建了一个按钮并在其上添加了单击事件侦听器
$('#myButton').click(function(){
// HERE I want reference of myPlugin back.
}
现在在按钮触发器上,我想找回myPlugin
对象。我不想使用myPluginVar
.有没有办法获取应用插件的myPlugin
使用元素的引用。
$.fn.myPlugin = function(){}
将创建一个插件,可以在如下元素上调用: $("#example").myPlugin();
,如您所知。
$.myPlugin = function(){}
将创建一个可以像这样静态调用的插件:$.myPlugin();
.
因此,您所要做的就是在每次调用$.fn.myPlugin
时设置$.myPlugin
,以便它将引用使用的最后一个元素。
$.fn.myPlugin = function(){
this.text("Hello, world!");
var t = this;
$.myPlugin = function() {
return t;
}
};
$("#test").myPlugin();
$("#button").click(function(){
$.myPlugin().text("something else");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="test">
</div>
<button id="button">Click Me</button>
你如何编写插件。
以下基本插件示例:
(function($){
$.fn.myPlugin = function(){
return this.text('Iam is myPlugin');
};
}(jQuery));
那是插件(还(不能被引用,因为它没有将自己传递给任何东西。
但是,如果更改插件代码缩写为:
(function($){
$.myPlugin = function(el){
$(el).data('myPlugin', this);
return $(el).text('Iam is myPlugin');
};
$.fn.myPlugin = function(){
return new $.myPlugin(this);
};
}(jQuery));
你可以调用插件自引用:
$('#targetElement').data('myPlugin');
offcourse 如果插件从未在 #targetElement 上初始化过,它将返回为未定义
但是,如果您已初始化 #targetElement,请使用:
$('#targetElement').myPlugin();
它将返回 $.myPlugin 对象