Javascript 编写jQuery插件:公共方法和多个插件实例
我已经花了几个小时写jQuery插件,阅读文档,搜索帖子等等。有一件事还不清楚。 我正在编写一个包含多个实例的插件,所以我有这样的东西Javascript 编写jQuery插件:公共方法和多个插件实例,javascript,jquery,Javascript,Jquery,我已经花了几个小时写jQuery插件,阅读文档,搜索帖子等等。有一件事还不清楚。 我正在编写一个包含多个实例的插件,所以我有这样的东西 <div id="box1" class="box"></div> <div id="box2" class="box"></div> <script type="text/javascript"> $(".box").myPlugin(); </script> 现在我需要这个插
<div id="box1" class="box"></div>
<div id="box2" class="box"></div>
<script type="text/javascript">
$(".box").myPlugin();
</script>
现在我需要这个插件来公开一个公共方法来读/写这样的私有变量。当然,上面的代码将失败并出现“myValue未定义”错误
在某种程度上,我需要获取对任何实例的引用,然后调用“他们的”公共方法。差不多
$('#box2')。showValue()/**/
任何帮助都将不胜感激。谢谢。不幸的是,如果不在
$.fn命名空间上简单地定义额外的“插件”,就很难让示例正常工作
通常,插件的方法可以作为传递给插件的参数来实现:
$("foo").myPlugin(); // initialize
$("foo").myPlugin("doSomething"); // do something
或者通过提供“实例”对象:
$("foo").myPlugin(); // initialize
var inst = $("foo").data("myPlugin"); // get instance
inst.doSomething(); // do something
第一个选项的示例可以在这里找到:看看:我的示例是(function($){$.fn.myPlugin=function(action){this.each(function(action){/*这是一个私有变量*/var myValue=Math.floor(Math.random()*10000);如果(action=='show'){alert('My value is'+myValue);}}});返回这个;};};}(jQuery));但是这是正确的吗?插件代码不是调用了4次(每个框两次)而不是2次吗?这是正确的,您需要在编写插件时牢记这一事实。
$("foo").myPlugin(); // initialize
var inst = $("foo").data("myPlugin"); // get instance
inst.doSomething(); // do something