JQuery - Widget公共方法

Ste*_*eve 30 jquery jquery-ui public-method

如果创建一个JQuery的微件(下文代码示例)中,然后定义一个"公共"的方法,是有任何其他方式来调用比使用以下形式的其它方法?

$("#list").list("publicMethod"); 
Run Code Online (Sandbox Code Playgroud)

我想创建一系列小部件,它们都定义相同的方法(基本上实现相同的接口),并且能够在不知道我当前正在调用该方法的哪个小部件的情况下调用该方法.在当前表单中,我需要知道我正在"list"小部件上执行该方法.


下面是使用"public"方法创建窗口小部件的示例.

 (function($) {
    var items = [];
    var itemFocusIdx = 0;

    $.widget("ui.list", {
        // Standard stuff
        options : { ... },
        _create : function() { ... },
        destroy : function() { ... },

        // My Public Methods
        publicMethod : function() { ... }
        ...
    });
}(jQuery));
Run Code Online (Sandbox Code Playgroud)

cda*_*ata 23

jQuery UI小部件使用jQuery的$ .data(...)方法间接地将小部件类与DOM元素相关联.在小部件上调用方法的首选方法正是Max所描述的...

$('#list').list('publicMethod');
Run Code Online (Sandbox Code Playgroud)

...但是如果你想要一个返回值,你可以通过数据方法以这种方式调用它:

$('#list').data('list').publicMethod();
Run Code Online (Sandbox Code Playgroud)

但是,使用第二种方法是对整个jQuery UI小部件模式进行侧面步骤,如果可能的话,应该避免使用.