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

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

callbacks.has( )コールバックのリストに特定のfunctionがあるかチェック

構文

コールバックのリストに特定のfunctionがあるかチェック返値:true/false
callbacks.has( function )ver1.7〜

機能

コールバックのリストに引数で指定したfunctuionが登録されているかをチェックします。存在しないfunctionを指定すると処理されないことに注意してください。→ページ最下段のメモ参照。

解説

コールバックのリストに特定のfunctionがあるかチェック

サンプル(has/01.html)を開いてbody内にbutton要素しかないことを確認してください。jQueryでは、まず以下の部分を確認してください。callbacks.addメソッドを利用してコールバックのリストにtestFuncを追加しています。testFuncは確認用のfunctionなので空のfunctionになっています。

var myCall = $.Callbacks();
myCall.add(testFunc);
function testFunc(){};

続いて以下の部分を確認してください。buttonをクリックするとcallbacks.hasメソッドを利用してコールバックのリストに「testFunc」があるかをチェックし、その結果を変数chkに代入してアラートで表示します。

$("button").click(function(){
	var chk = myCall.has(testFunc);
	alert(chk);
});

コールバックにtestFuncは追加されているので、buttonをクリックするとアラートで「true」と表示されます。

メモ

存在しないfunctionをチェックできません

サンプルとしてfalseが表示されるものを作成したのですが、注意点があったのでメモしておきます。サンプル(has/test01.html)を開いて、ほとんどhas/01.htmlと同じ事を確認してください。異なるのは以下の様にcallbacks.hasメソッドの引数に登録されていないfunction「sampleFunc」に変更しただけです。

$("button").click(function(){
	var chk = myCall.has(sampleFunc);
	alert(chk);
});

このサンプルでbuttonをクリックしても機能せずアラートが表示されません。これはcallbacks.hasメソッドの引数に存在しないfunctionを設定しているためです。実際にhas/test01.htmlの中にはsampleFuncはありません。

ではsampleFuncが存在するサンプル(has/test01b.html)を確認してください。以下の様に何も実行しないsampleFuncが作成されています。

function sampleFunc(){};

このサンプルであれば、buttonをクリックした時に「sampleFunc」がコールバックのリストにないことがチェックされアラートで「false」と表示されます。存在しないfunctionを指定しないように気を付けましょう。