2

シンプルなボタンがあります。クリックされたときにハンドラーにデータを送信する必要があります。

だから私はONオーバーロードメソッドを使用してこのコードを持っています:

.on( events [, data ], handler(eventObject) )

このサンプルを作成しました:

var aaa="john";

function greet(event) { alert("Hello "+event.data.name); }

$("button").on("click", { name: aaa}, greet);

setTimeout(function (){aaa="paul"},2000)

しかし、 2 秒待った後でも、次のように表示されます。 "Hello John"

aaaしたがって、値は解釈時に制限されていると想定しています。

質問 :

2秒後に警告するようにコードを変更するにはどうすればよいHello Paulですか?

JSBIN

4

3 に答える 3

4

簡単な方法は、オブジェクト リテラルを使用することです。これをイベント データとして渡し、後で変更する参照を保持できます。

var greetData = {
    name: "john"
};

function greet(event)
{
    alert("Hello " + event.data.name);
}

$("button").on("click", greetData, greet);

setTimeout(function() {
    greetData.name = "paul";
}, 2000);

更新された JS Binはこちらにあります

于 2013-08-29T09:34:36.940 に答える
3

Frederic Hamidi の答えの方が優れています。これは代替手段として残します。

名前自体の代わりに名前をロードする関数を渡すように変更すると、機能します。

var aaa="john";

function getName() {
  return aaa;
}

function greet(event) { alert("Hello "+event.data.name()); }
$("button").on("click", { name: getName}, greet);

setTimeout(function (){aaa="paul";},2000);

http://jsbin.com/ohAJihi/4/edit

于 2013-08-29T09:35:18.790 に答える