如何使用jQuery的change()方法带参数的函数?

我正在使用jQuery版本1.5。 我正在看jQuery的change()函数,特别是在这一点:

.change( [ eventData ], handler(eventObject) ) eventData: A map of data that will be passed to the event handler. handler(eventObject): A function to execute each time the event is triggered. 

什么是JavaScript中的“数据图”? 我如何使用下面的testing函数作为事件处理程序?

 var myHandler = function(msg){alert(msg);}; 

我试过这个:

 $("select#test").change(["ok"], myHandler); 

和警报报告[object Object]

请参阅event.data 。 数据不作为处理程序的parameter passing,而是作为事件对象的属性:

 $("select#test").change({msg: "ok"}, function(event) { alert(event.data.msg); }); 

处理程序总是只接受一个参数,它是event对象。 这就是为什么你的警报显示"[object Object]" ,你的function是打印事件对象。
如果你想使用自定义参数的函数,你必须把它们包装到另一个函数中:

 $("select#test").change({msg: "ok"}, function(event) { myHandler(event.data.msg); }); 

要不就

 $("select#test").change(function(event) { myHandler("ok"); }); 

顺便说一句。 select器最好写成$('#test') 。 ID(应该是)唯一的。 没有必要预先标记标签名称。

在Javascript中究竟是一个“数据图”?

基本上只是一个对象,例如:

 var data = { foo: "I'm foo", bar: "I'm bar" }; 

所有JavaScript对象本质上都是地图(又名“字典”又名“关联数组”)。

我如何使用下面的testing函数作为事件处理程序?

通过包装在另一个function:

 $("select#test").change(function() { myHandler($(this).val()); }); 

每当它发生变化时,都会使用select框的值调用myHandler

如果要使用eventData部分,请在处理程序之前添加一个对象:

 $("select#test").change({ foo: "I'm foo" }, function(event) { myHandler(event.data.foo, $(this).val()); }); 

这个myHandler调用myHandler作为第一个参数,然后是“I'm foo”,然后是select框的值,只要它改变了。