我试图让我的sayHello函数打印出“Test”但是它打印出来是未定义的。我有一个对象,其中一个名为firstName的字段设置为“Test”。我错过了什么,所以我的sayHello函数警告“Test”而不是event.data.firstName
的Undefined。这是我的代码
$('button.focus').click(function() {
$('div').data("greeting","Hello world");
alert($('div').data("greeting"));
{
firstName: 'Test'
}
}, sayHello);
function sayHello(event)
{
alert(event.data.firstName)
}
答案 0 :(得分:2)
根据event.data的文档
绑定当前执行处理程序时传递给事件方法的可选数据对象。
在您的示例中,您尝试绑定到一个匿名函数和一个名为。
的函数.click()不支持。您需要传递如下所示的事件数据
$('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>
&#13;
答案 1 :(得分:0)
javascript
不会将对象传递给事件处理程序。该对象位于事件处理程序中的块内。
您可以在事件处理程序之外定义对象。使用.on()
,将对象作为第二个参数传递给.on()
。在sayHello
作为参数的事件处理程序中调用event
。
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)
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="focus">click</button>
&#13;