2011-07-28 4 views
0

は、だから私はjQuery関数内のすべてをアンバインドしますか?

function onLoadMe() { 
//stuff in function 
} 

のような機能であり、第2の機能を持っている

function onLoadMeSecond() { 
    //stuff in function 
    } 
私がしようとすると、ページの読み込みに onLoadMe()を結合したが、その後 onLoadMe()ですべてをアンバインドし、第2の機能をロードしたい

要素のためのonLoadMeSecond()

すなわち

jQuery('#some-id').click(function() { 
    jQuery(this).unbind(onLoadMe()); 
    onLoadMeSecond(); 
}); 

どのように私は上記の動作しないとしてこれを行うことができますか?

編集:例にhttp://jsfiddle.net/cer9R/5/

+0

jsfiddleサンプルのロジックフローに問題があります。あなたのコードで何をしようとしていますか? –

+0

論理的な問題が何であるか分かりません@http://jsfiddle.net/cer9R/5/-基本的に 'onLoad()'が読み込まれます。もし 'test3'をクリックすると' unbind(onLoad) 'と'test2'を表示しますか?しかし、それはdoesntですか? – Tom

答えて

1

正しい構文はです。

JsFiddleの例では、ページの読み込みではなく、ドキュメントの準備ができているハンドラをバインドしていますが、バインドを解除するには$(document).unbind('ready')を使用します。もちろん、(すでに終了している)文書準備完了ハンドラをバインド解除するクリックハンドラをバインドするためにdocument readyイベントを使用することは全く意味がありません。

+0

legend - うまくいくようです:-) @ http://jsfiddle.net/cer9R/8/を参照してください。 - それでも '#test'をクリックしても動作するようですが?つまり、クリックイベントはバインド解除されていませんか? – Tom

+0

クリックハンドラをアンバインドしようとしている場合は、$( '#test')。unbind( 'click') 'を使用してください。あなたの質問は、ロードハンドラのバインドを解除することであると理解しました。 – Tgr

+0

よく 'onLoad'の中に含まれているすべてのものを実際にアンバインドしたいのですか?つまり、それがクリックかどうかにかかわらずですか? – Tom

0

を参照してくださいUは次のように記述してみたのですか?

jQuery(this).unbind("onLoadMe"); 

または多分ちょうどこの

jQuery(this).unbind(); 
0

アンバインドパラメータから()を削除します。

jQuery('#some-id').click(function() { 
    jQuery(this).unbind(onLoadMe); 
    onLoadMeSecond(); 
}); 

onLoadMe代わりのonLoadMe()

+0

修正 - 関数へのポインタを提供する代わりに関数を呼び出すことになります。 – Soren

+0

@Makram @Soren - 問題は、エラーが発生しているようです。つまりFFでFirebugを使用してhttp://jsfiddle.net/cer9R/1/をチェックしますか?生成されたエラーが 'types.splitは関数ではありません 'のようなものです。 – Tom

+0

何ですか?これは、[.bind](http://api.jquery.com/unbind/)がどのように動作するかはまったくありません。あなたはそれにイベント型またはイベントオブジェクトを渡すべきです。とにかく 'window'オブジェクトにロードイベントがバインドされています。 – Tgr

関連する問題