2016-12-21 5 views
1

sayHello関数を "Test"を出力しようとしていますが、未定義です。オブジェクトがあり、その中にfirstNameというフィールドがあり、 "Test"に設定されています。私のsayHello関数は、event.data.firstNameのUndefinedの代わりに "Test"を警告するので、何が欠けていますか?現在実行中のハンドラがバインドされたときにここでevent.dataevent.dataを使用して印刷しようとしていません。

のための私のコードのドキュメントを1として

$('button.focus').click(function() { 
    $('div').data("greeting","Hello world"); 

    alert($('div').data("greeting")); 

    { 
    firstName: 'Test' 
    } 

}, sayHello); 

function sayHello(event) 
{ 
    alert(event.data.firstName) 
} 

答えて

2

イベントメソッドに渡されるデータのオプションのオブジェクトです。

例では、匿名の関数と名前の関数にバインドしようとしています。

.click()ではサポートされていません。あなたは、イベントハンドラにオブジェクトを渡しません。質問で

0

javascript

$('button.focus').click({firstName: 'Test'},sayHello); 
 
function sayHello(event) 
 
{ 
 
    $('div').data("greeting","Hello world"); 
 
    alert($('div').data("greeting")); 
 
    alert(event.data.firstName); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="focus">focus</button>

の下のようなイベントデータを渡す必要があります。オブジェクトは、イベントハンドラ内のブロック内にあります。

イベントハンドラの外側にオブジェクトを定義できます。 .on()を使用し、オブジェクトを第2パラメータとして.on()に渡します。イベントハンドラ内でeventをパラメータとしてsayHelloを呼び出します。

var data = { 
 
    firstName: 'Test' 
 
}; 
 

 
$('button.focus').on("click", data, function(event) { 
 
    $('div').data("greeting", "Hello world"); 
 

 
    alert($('div').data("greeting")); 
 

 
    sayHello(event) 
 

 
}); 
 

 
function sayHello(event) { 
 
    alert(event.data.firstName) 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="focus">click</button>

関連する問題