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函数(或其他任何东西)来自哪里?这只是引用对象的消息属性的标准方法吗?
答案 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)
答案 2 :(得分:0)
来自bind()
的jQuery文档
.bind( eventType [, eventData ] [, preventBubble ] )
eventType 类型:字符串
包含一个或多个DOM事件类型的字符串,例如 “单击”或“提交”或自定义事件名称。
eventData 类型:任何
包含将传递给事件处理程序的数据的对象。
preventBubble 类型:布尔值
将第三个参数设置为false将 附加一个阻止发生默认操作的函数 阻止事件冒泡。默认值为true。
因此,当您将数据传递给bind方法(第二个参数)时,它在事件对象上可用作data property。
event.data
描述:绑定当前执行处理程序时传递给事件方法的可选数据对象。