我有一个应用于少数元素的插件。有什么方法可以存储和检索JQuery插件对象,以便我们可以运行该对象的方法。样品的例子是:从html元素中识别插件
$('#li1').myPlugin(); // apply plugin object to different li
$('#li2').myPlugin(); // apply plugin object to different li
$('#li3').myPlugin(); // apply plugin object to different li
现在我想检索用户活动对象其他外部元件上,以运行该插件的一些方法。像
var idx = 2
$('body').click(function(){ $('li').eq(2).highLight(); })
由于highLight
是myPlugin
但不是李公共方法,所以它不会执行。 我可以设置为myplugin对象属性的元素(但它不是字符串)或我可以做插件初始化内这种方式,
$(this)[0].obj = this; // sounds weird.
什么是比创建全球关联数组存储的对象与元素之外的另一种选择Id为关键。这在我的情况下是不可能的,因为我的插件元素可能有也可能没有ID。
编辑
这是样品插件,实际是太大了,在这里发表。目标是通过外部活动来识别与元素相关联的插件。示例示例使用body.click
,但假设我们无法在我的插件中实现点击。实际上,事件可能是插件未知的任何外部自定义事件。我希望我很清楚。
(function ($) {
$.fn.myPlugin = function(){
var ele = this;
// elr.get(0).extension = this; // can I do this, cross browser?
// so that later i can call it as
// $('li').eq(1).get(0).extension.highLight()
this.highLight = function(){
ele.css('color','red');
}
this.blueIt = function(){
ele.css('color','blue');
}
this.blueIt();
}
})(jQuery);
也许你可以显示一些你的插件 - 也许方法定义 – ManseUK
@ManseUK更新后,澄清问题 – hungryMind