-4

次のような状況があるとします。

<a href="#" id="trigger">CLICK ME</a>

  var x = alert("test");
  $('#trigger').click(function() {
      x
  });

xボタンを押している間ではなく、ページの読み込み時に発火するのはなぜですか? 変数を関数に配置すると機能することはわかっていますが、その理由はわかりません!

4

4 に答える 4

3
var x = alert("test");

これが実行さalert("test")れ、その式の値が に代入されxます。(alert何も返さないので、xに設定されundefinedます。)

代わりに、次のコードを使用します。

var x = function() {
    alert("test");
}
$('#trigger').click(function() {
    x(); //remember to actually call it!
});

いくつかのより良い方法を次に示します。

$('#trigger').click(x); //no need to wrap in function if it does not have
                        //any arguments
$('#trigger').on('click', x); //using on
于 2013-05-27T14:52:19.570 に答える
1

この行で

var x = alert("test");

実際に関数を呼び出し、その戻り値を変数 x に入れます。Asalert()には戻り値undefinedがなく、実際には何も格納されていませんx

そのため、次にアクセスxするときはまだ空であり、関数へのポインターなどは含まれていませ!

于 2013-05-27T14:53:17.010 に答える
1

var x = alert("test");はすぐに関数を呼び出し、alert("test")戻り値を に代入しxます。

希望する動作を得るために、アラートの呼び出しを関数でラップできます。

var x = function() {
    alert("test");
}

後で呼び出すには、括弧 (パラメーター リスト) を使用します。

$('#trigger').click(function() {
      x();
});
于 2013-05-27T14:53:42.163 に答える
0

alert("test")アラートメッセージを表示する機能です。この関数は$('#trigger')領域外で呼び出すため、トリガーのクリック機能とは関係ありませんが、スクリプト部分がブラウザーによって実行されるとすぐに実行されます。

于 2013-05-27T14:53:31.950 に答える