如果我创建一个JQuery小部件(代码示例如下),然后定义一个“公共”方法,有没有其他方法来调用该方法,而不是使用以下形式?
$("#list").list("publicmethod");
我想创建一系列的小部件,所有的定义相同的方法(基本上实现相同的接口),并能够调用该方法,而不知道什么窗口部件我目前调用的方法。在当前窗体中,我需要知道我正在“列表”窗口小部件上执行方法。
下面是使用“public”方法创建小部件的示例。
(function($) {
var items = [];
var itemFocusIdx = 0;
$.widget("ui.list",{
// Standard stuff
options : { ... },_create : function() { ... },destroy : function() { ... },// My Public Methods
publicmethod : function() { ... }
...
});
}(jQuery));
解决方法
jQuery UI widget使用jQuery的$ .data(…)方法来间接关联widget类和DOM元素。在窗口小部件上调用方法的首选方法正是Max …
$('#list').list('publicmethod');
…但是如果你想要一个返回值,你会有更好的运气这样调用,通过数据方法:
$('#list').data('list').publicmethod();
但是,使用第二种方式侧面步骤的整个jQuery UI窗口模式,并应尽可能避免,如果可能的话。