Я обнаружил разницу между jQuery плагином и виджетом здесь ссылка . В нем говорится, что «Он отличается от стандартного jQuery плагина двумя важными способами. Во-первых, контекст - это объект, а не элемент DOM. Во-вторых, контекст всегда представляет собой отдельный объект, а не коллекцию».
Мой вопрос: как виджет сохраняет состояния? Вот что это значит под контекстом и одним объектом?
Да После прочтения книг JQuery Пользовательский интерфейс в действии Я получил ответ на свой вопрос.
* «Отличительной чертой виджета является его концепция состояния. Многие плагины jQuery не имеют или не нуждаются в концепции состояния. Рассмотрим следующий плагин jQuery, который заменяет содержимое выбранного элемента случайным числом:
$.fn.randomNumber = function() {
return this.each( function( index, element ) {
$( element ).html( Math.random() * 1000 );
};
};
Этот плагин предназначен для однократного запуска. Плагин не запоминает, какие элементы он изменил или что-либо о них. Сравните это с любым из виджетов пользовательского интерфейса jQuery, например, виджетом диалога, созданным в следующем коде:
<div id="dialog"></div>
<script>
$( "#dialog" ).dialog({ title: "Hello World" });
</script>
Плагин randomNumber () ничего не знал об элементе, с которым он работал; виджет диалога знает об элементе очень много. Он знает, что это диалог, его название - «Hello World» и т. Д. (Мы рассмотрим, как он запоминает эту информацию позже в этой главе.) Dialog - отличный кандидат на роль виджета, потому что он имеет состояние для человека возраст; вы можете открыть его, закрыть, изменить название, высоту и т. д. И наоборот, плагин randomNumber () не является хорошим кандидатом на виджет, потому что у него нет состояния. Общее правило таково: используйте фабрику виджетов, если вы хотите создать плагин, поддерживающий состояние. *