JQuery - Открытые методы виджета

Если я создаю виджет JQuery (пример кода ниже) и затем определяю "общедоступный" метод, есть ли какой-либо другой способ назвать метод кроме использования следующей формы?

$("#list").list("publicMethod"); 

Я хотел бы создать серию виджетов, что все определяют те же методы (в основном реализующий тот же интерфейс), и смочь назвать метод, не зная ничего, о котором виджете я в настоящее время вызываю метод на. В текущей форме я должен знать, что выполняю метод на виджете "списка".


Ниже пример создания виджета с "общедоступным" методом.

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

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

        // My Public Methods
        publicMethod : function() { ... }
        ...
    });
}(jQuery));
30
задан wattostudios 30 April 2012 в 14:15
поделиться

4 ответа

Виджеты jQuery UI используют метод jQuery $ .data (...) для косвенного связывания класса виджета с элементом DOM. Предпочтительный способ вызова метода в виджете - это именно то, что было описано Максом ...

$('#list').list('publicMethod');

... но если вы хотите указать возвращаемое значение, вам повезет, вызвав его таким образом, через данные method:

$('#list').data('list').publicMethod();

Однако использование второго способа обходит весь шаблон виджета пользовательского интерфейса jQuery, и его, вероятно, следует избегать, если это возможно.

23
ответ дан 28 November 2019 в 00:25
поделиться

Как насчет этого:

$("#list").list.publicMethod

Поскольку вы расширяете ui.list с помощью набора пары ключ: значение

-2
ответ дан 28 November 2019 в 00:25
поделиться

Попробуйте следующее:

$("#list").list("publicMethod");
0
ответ дан 28 November 2019 в 00:25
поделиться

Немного не по теме, я знаю, но вы можете захотеть посмотреть на jquery Entwine.

Это обеспечивает форму наследования и полиморфизма, которая позволяет некоторые умные действия с простым кодом. Похоже, что это позволит сделать то, что вы пытаетесь сделать.

2
ответ дан 28 November 2019 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: