自定义jQuery插件,露出方法,和存储单元的信息

我在写我的第一个jQuery插件,但我已经遇到了一些问题。 在我第一次尝试,我成功地实施了基本的插件,但现在我需要公开的其他方法的客户端使用。

经过无数次的文章,计算器的​​帖子,阅读我想我可以创建一个对象,并将其存储在该元素的.data()缓存中的文件。 不过,我写的代码似乎引用同一个对象时,我打电话给我的插件。

诚然,我仍然在的jQuery的学习阶段,所以我的术语缺乏,谷歌一直没有能够转危为安我。

var CONST_TEST_KEY = "test-data-key"; (function($){ var TestObject = function(e, o){ var elem = $(e); this.random = Math.floor(Math.random() * 100); this.GetRandom = function() { alert(this.random); } }; $.fn.testJQueryPlugin = function(o) { return $.each(function() { var currentElement = $(this); if(currentElement.data(CONST_TEST_KEY)) return; currentElement.data(CONST_TEST_KEY, new TestObject(currentElement, {})); }); }; })(jQuery)

在HTML:

<script type="text/javascript"> $(document).ready(function() { var object1 = $("#entry1").testJQueryPlugin(); var object2 = $("#entry2").testJQueryPlugin(); alert($(object1).data(CONST_TEST_KEY).random); alert($(object2).data(CONST_TEST_KEY).random); }); </script> </head> <body> <div id="entry1"> x </div> <div id="entry2"> y </div> </body>

此代码显示了两个警报都具有相同的价值。 我希望每个警报有不同的值。 我将不胜感激的任何解决方案,指针,甚至更好,为什么是这样工作的解释和/或为什么我应该做不同的看法。

--------------解决方案-------------

至少有一个直接的问题,我看到的是在调用each() 它看起来像你混淆jQuery.each()一个通用的迭代函数)和.each() 你甚至没有经过适当的第一个参数jQuery.each()所以它不是遍历你认为它是。 试试这个,看看尺寸:

http://jsfiddle.net/mattball/xaydr/

(包括一些其他清理,以及像提供使用适当的链接return this;

问题是,您的来电each()缺少一个参数。 第一个参数是收集要迭代,第二个参数是函数调用。

它应该是这样的:

$.fn.testJQueryPlugin = function(o) {
return $.each(this, function() {
var currentElement = $(this);

if(currentElement.data(CONST_TEST_KEY))
return;

currentElement.data(CONST_TEST_KEY, new TestObject(currentElement, {}));
});
};

看到它在行动的jsfiddle

分类:jQuery的 时间:2015-03-16 人气:13
本文关键词: jQuery的,jQuery插件
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.266 (s). 10 q(s)