Javascript 正在尝试使用事件打印。数据未定义

Javascript 正在尝试使用事件打印。数据未定义,javascript,jquery,Javascript,Jquery,我试图让我的sayHello函数打印出“Test”,但它打印出的是未定义的。我有一个对象,其中有一个名为firstName的字段,设置为“Test”。我遗漏了什么,因此我的sayHello函数提醒“Test”,而不是event.data.firstName的未定义。这是我的密码 $('button.focus').click(function() { $('div').data("greeting","Hello world"); alert($('div').data("greeti

我试图让我的sayHello函数打印出“Test”,但它打印出的是未定义的。我有一个对象,其中有一个名为firstName的字段,设置为“Test”。我遗漏了什么,因此我的sayHello函数提醒“Test”,而不是
event.data.firstName
的未定义。这是我的密码

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

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

  {
    firstName: 'Test'
  }

}, sayHello);

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

根据event.data的文档

绑定当前执行处理程序时传递给事件方法的可选数据对象

在您的示例中,您试图绑定到一个匿名函数和一个命名函数

.click()不支持此操作。您需要像下面这样传递事件数据

$('button.focus')。单击({firstName:'Test'},sayHello);
函数sayHello(事件)
{
$('div')。数据(“问候语”、“你好世界”);
警报($('div')。数据(“问候”);
警报(event.data.firstName);
}


问题的焦点不将对象传递给事件处理程序。该对象位于事件处理程序内的块中

您可以在事件处理程序之外定义对象。使用
.on()
,将对象作为第二个参数传递给
.on()
。在事件处理程序中调用
sayHello
,并将
event
作为参数

var数据={
名字:“测试”
};
$('button.focus')。在(“单击”、数据、函数(事件)上{
$('div')。数据(“问候语”、“你好世界”);
警报($('div')。数据(“问候”);
你好(活动)
});
函数sayHello(事件){
警报(event.data.firstName)
}

单击