2012-02-23 5 views
0

私はonloadとonclickと呼ぶことができるより一般的な方法をより良く書く方法を学びたいと思います。これはこれまで私が完璧に働いてきたものです。onclickとonloadの間のjqueryの共有メソッド

rushJustification($("#rush")); 

$("input#rush").click(function() { 
    rushJustification($(this)); 
}); 

function rushJustification(obj) { 
    var rushInput = obj.is(':checked'); 
    var rushContainer = $("#rush-justification-container"); 

    if(rushInput) { 
     rushContainer.slideDown(300); 
    } else { 
     rushContainer.hide(); 
    } 
} 

答えて

4

代わりclickハンドラの内容をコピーするので、同様にそれをトリガー:他のスクリプトはすでにイベントを結合したとき

$("input#rush").click(function() { 
    rushJustification($(this)); 
}).click(); 

前述の方法は、いくつかの副作用を持つことができます。あなたの場合、次のコードを使用することができます:

rushJustification($("input#rush").click(function() { 
    rushJustification($(this)); 
})); 

最初は奇妙に見えるかもしれません。この機能は、jQueryの連鎖性のために可能です。 clickメソッドは同じjQueryコレクション、つまり$('input#rush')を返します。これは、引数としてrushJustification関数に渡されます。

+0

この方法では、ui-checkboxで使用すると予期しない動作が発生するようです。チェックボックスが保存されている場合:チェックされていると、ページがチェックされずにチェックが外され、rushContainerがブロックを表示します。 –

+0

@Georgeあなたは何を言っているのか分かりません。あなたは '#rush'にバインドされた複数の' click'イベントを持っていますか? –

+0

何が起こっているのかを知るために、バックエンドによって設定されたページにチェックボックスがあります。 trueの場合は、テキストフィールドを表示する必要があります。クリックしないでrushJustificationメソッドを呼び出すのではなく、チェックボックスを元に戻すページが読み込まれるたびに、コードがイベントハンドラを起動します。これは私がコードrushJustification()を得ることができる最もクリーンです。 $( "input#rush")。クリック(rushJustification); –

関連する問題