私はこれを「パブリッシュとサブスクライブ」(「Pub/Sub」) アプローチのケースと考えています。
この記事では、jQuery 1.7 で Pub/Sub を実行する 4 つの方法を学びます。私は jquery 1.7 の新機能、つまり $.Callbacks 機能を利用するオプション 1 を選択しました。この記事は十分な理解を与えてくれますが、ここではそれを改善しようとはしません。
以下のコードはオプション 1 をわずかに変更したバージョンで、グローバル var の必要性を回避しています。
$.Topic = function(id) {
var callbacks, topic = id && $.Topic.topics[id];
if (!topic) {
callbacks = $.Callbacks();
topic = {
publish: callbacks.fire,
subscribe: callbacks.add,
unsubscribe: callbacks.remove
};
if (id) {
$.Topic.topics[id] = topic;
}
}
return topic;
};
$.Topic.topics = {};//avoid global var by making `topics` a property of the static function `jQuery.Topic`.
$(function() {
//A function to change the logo and fire a publisher.
function changeLogoSrc(src) {
$("#logo img").attr('src', src);
$.Topic('logoSrcChanged').publish(src);
}
// A subscriber which listenes for the 'logoSrcChanged' publisher
// and responds by writing the src string to the required form field
$.Topic('logoSrcChanged').subscribe(function(src) {
$("#input_2_15").val(src);
});
});
デモはこちら
したがって、ロゴを変更するためのコードとフォーム フィールドを更新するためのコードは、正しい専門用語を使用すると、効果的に「分離」されます。
このアプローチは単純なものとしては間違いなく誇張されていますが、多くの pub/sub が必要なより大規模な環境では役立ちます。