$(function(){
function f1(){}
function f2(){}
}
<Input type = radio Name = radiobutton Value = "something" checked=checked onClick= //here call f1()//>
OnClick で f1 関数にアクセスしようとしています
このようなコードは機能しません:
$.function.f1()
$.function().f1()
$(function(){
function f1(){}
function f2(){}
}
<Input type = radio Name = radiobutton Value = "something" checked=checked onClick= //here call f1()//>
OnClick で f1 関数にアクセスしようとしています
このようなコードは機能しません:
$.function.f1()
$.function().f1()
これは、次のようにする必要があるためです。
$(function () {
function foo () { }
function bar () { }
// bind
$('input').on('click', foo);
});
onclick=
... HTML マークアップに属性を配置する代わりに。
リクエストに応じて、マークアップの代わりに jQuery バインドを実行する必要がある理由について簡単に説明しますonclick
。
onclick=do_backflips()
マークアップを挿入すると、これに違反し、将来的に悪夢のようなメンテナンスの問題が発生する可能性があります。onclick=
構文は本質的に1:1
. つまり、当然のことながら、各要素のイベントごとに、1 つのイベント ハンドラーしかアタッチできません。それは間違いなくボールを吸う。f1
と関数を定義することにより、その関数内でのスコープを制限しています。つまり、スクリプト インタープリターはHTML マークアップの場所を認識できません。ハンドラーが既知の場所にイベントハンドラーをアタッチする必要があり、それは内部にあります(それが理にかなっている場合)。f2
document.ready
f1
document.ready
使用のポイントは$( function(){ ... } )
、内部が何であれ、DOM のロードが完了した後にのみ実行されることです。名前空間をクリーンに保ち、ローカル スコープで関数を使用することが目的でない限り、そこで関数を定義してもメリットはありません。
この場合、スコープ外の関数が必要なので、無名関数の外に移動するか、イベントをスコープ内のラジオ ボタンにバインドします。