如何使用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框的值,只要它改变了。