デザイナーにも分かりやすいjQuery入門講座|jQueryの使い方

このエントリーをはてなブックマークに追加
索引
Core:コアとなる仕組み
Selectors:セレクタ
Attributes:属性
Traversing:対象の変更
Manipulation:操作
CSS:スタイルシート
Events:イベント
Effects:演出効果
Ajax:xml等との連携
Utilities:ユーティリティ
Data:データ
Miscellaneous:諸々
Deferred:処理管理
Callbacks:コールバック
Internals:内部処理

jQuery.noop( )何もしないfunction

構文

何もしないfunction返値:function
jQuery.noop( )ver1.4〜

機能

jQuery.noopは何もしないfunctionを返します。何もしないのでわざわざ利用する必要もないと感じるかもしれませんが、何もしないということを明示するために利用されたりします。

noopの由来はno operationです。→参考:wikipedia「NOP

解説

何もしないことを明示

まずはjQuery.noopを利用していないサンプルから確認します。 サンプル(noop/01.html)を開いてbody内に何もないことを確認して下さい。jQueryは以下の様に記述され、(ダミーの)変数myStatusの値が「done」ではなかったらdoFuncにcheckFuncを代入し、そうでなかったらdoFuncに空のfunctionを代入します。

if (myStatus != "done") {
	doFunc = checkFunc;
}else{
	doFunc = function(){};
}

4行目はdoFuncに何もしないfunctionを設定したいのに、このソースだと「作成途中なのかな?」と勘違いする危険性があります。そこでサンプル(noop/01b.html)を開いて以下の部分を確認してください。

if (myStatus != "done") {
	doFunc = checkFunc;
}else{
	doFunc = $.noop;
}

このように記述しておけば、doFuncは何もしないように設定したいのだと明示され、作成途中と勘違いすることはなくなります。地味かもしれませんが人為的なミスを減らすテクニックの1つです。

メモ

1回しか実行できないfunction

実行されたら自分自身にjQuery.noopを設定することで、1回しか実行できないfunctionを作成する事ができます。サンプル(noop/test01.html)を開いてbody内にbutton要素しかないことを確認してください。

jQueryは、まず以下の部分を確認してください。function「myFunc」が作成されていますが、処理を実行すると自分自身にjQuery.noopを代入するため1回しか実行できなくなっています。

function myFunc(){
	alert("myFunc");
	myFunc = $.noop;
};

buttonをクリックすると以下の様にmyFuncを実行しアラートが表示されますが、2回目以降buttonをクリックしてもアラートは表示されません。

$("button").click(function(){
	myFunc();
});

イベントがらみで1回しか実行したくない場合は、イベントのoneを利用すると良いでしょう。