.data代表什么?

时间:2016-01-07 20:34:25

标签: jquery

var linkVar = { message:'Hello from a link'};
var pVar = { message:'Hello from a paragraph'};
function showMessage(evt) {
 alert(evt.data.message);
}
$('a').bind('click',linkVar,showMessage);
$('p').bind('mouseover',pVar,showMessage);

好吧,我知道bind()函数是如何工作的。我无法理解的是以下部分:

alert(evt.data.message); 

这个.data函数(或其他任何东西)来自哪里?这只是引用对象的消息属性的标准方法吗?

3 个答案:

答案 0 :(得分:3)

jQuery的bind()现在应该由on()替换,但在这种情况下它并不重要,参数是相同的

.bind( eventType [, eventData ], handler )

eventData参数是可选的,只是将数据传递给回调,就像您的示例所示。

这是jQuery特有的,并且添加到bind / on的工作方式,以便能够将数据传递给回调。

它不经常使用,但它有时能够将静态数据传递给回调函数。

这是另一个例子

$(element).on('click', {optional : 'data'}, function(e) {

   console.log( e.data.optional ); // outputs "data"

});

答案 1 :(得分:0)

是的,它是来自bind回调的eventInfo对象的一部分。在那里你可以看到相同的:

http://api.jquery.com/bind/

enter image description here

答案 2 :(得分:0)

来自bind()

的jQuery文档
  

.bind( eventType [, eventData ] [, preventBubble ] )

     

eventType 类型:字符串

     

包含一个或多个DOM事件类型的字符串,例如   “单击”或“提交”或自定义事件名称。

     

eventData 类型:任何

     

包含将传递给事件处理程序的数据的对象。

     

preventBubble 类型:布尔值

     

将第三个参数设置为false将   附加一个阻止发生默认操作的函数   阻止事件冒泡。默认值为true。

因此,当您将数据传递给bind方法(第二个参数)时,它在事件对象上可用作data property

  

event.data

     

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