Расширение плагина jQuery - PullRequest
13 голосов
/ 16 апреля 2009

Кто-нибудь расширил существующий плагин jQuery?

Я не уверен, с чего начать. Я бы предпочел не копировать и не изменять плагин, который я хотел бы расширить. Я делаю это через прототип или просто вызов расширения для данного плагина?

Или я мечтаю, что имеет смысл сделать это?

Ответы [ 2 ]

10 голосов
/ 16 апреля 2009

РЕДАКТИРОВАТЬ: Как указал Seb, это не является строго примером «расширения» плагина, более «инкапсулирования» плагина, поэтому принимайте его как есть:)

Вот что я сделал, чтобы упростить использование плагина jquery для автозаполнения некоторое время назад:

// small autocomplete plugin wrapping the full autocomplete plugin for a standard look and feel
(function($) {
    $.fn.standardAutocomplete = function(type) {
        return this.autocomplete(ToAbsoluteUrl("~/System/Autocomplete/" + type), {
            formatItem: formatItem,
            formatResult: formatResult
        });
        // Autocomplete formatting callbacks
        function formatItem(row) { return row[0] + "<span class=\"sub\">" + row[1] + "</span>"; }
        function formatResult(row) { return row[0].replace(/(<.+?>)/gi, ''); }
    }
})(jQuery);

Теперь это не соответствует "книге" практики кодирования jquery - например, Я не учитываю тот факт, что может быть выбрано несколько элементов, но в этом случае я знаю, что никогда не выберу с этим более одного элемента на странице, поэтому я хотел сохранить простоту, и это "работает для мне". Возможно, вам удастся использовать аналогичный подход, возможно, с большей сложностью.

2 голосов
/ 16 апреля 2009

Если плагин хорошо сделан, то у вас не так много вариантов, кроме как использовать опции для изменения его поведения.

Целью этого является то, что весь его код инкапсулирован и не мешает другому коду, поэтому вы не можете вставить в него какой-либо код.

Если вам действительно нужно изменить его поведение, то, я думаю, вам нужно скопировать и вставить код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...