Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery';s change()方法?_Javascript_Jquery_Event Handling - Fatal编程技术网

Javascript 如何使用jQuery';s change()方法?

Javascript 如何使用jQuery';s change()方法?,javascript,jquery,event-handling,Javascript,Jquery,Event Handling,我使用的是jQuery 1.5版。 我正在研究jQuery的函数 特别是在这一点上: .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中的“数

我使用的是jQuery 1.5版。 我正在研究jQuery的函数 特别是在这一点上:

.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中的“数据映射”到底是什么?如何将以下测试函数用作事件处理程序

var myHandler = function(msg){alert(msg);};
我试过这个:

$("select#test").change(["ok"], myHandler);
和警报报告[对象]

Javascript中的“数据映射”到底是什么

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

var data = {
    foo: "I'm foo",
    bar: "I'm bar"
};
所有JavaScript对象本质上都是映射(又称“字典”又称“关联数组”)

如何将以下测试函数用作事件处理程序

通过将其包装到另一个函数中:

$("select#test").change(function() {
    myHandler($(this).val());
});
$("select#test").change({msg: "ok"},  function(event) {
    myHandler(event.data.msg);
});
无论何时更改,它都会使用选择框的值调用
myHandler

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

$("select#test").change({
    foo: "I'm foo"
}, function(event) {
    myHandler(event.data.foo, $(this).val());
});
它调用
myHandler
,第一个参数是“I'm foo”,然后是选择框的值,只要它发生变化。

请参阅。数据不会作为参数传递给处理程序,而是作为事件对象的属性传递:

$("select#test").change({msg: "ok"},  function(event) {
    alert(event.data.msg);
});
处理程序始终只接受一个参数,即
事件
对象。这就是为什么您的警报显示
“[对象]”
,您的函数正在打印事件对象的原因。
如果要使用带有自定义参数的函数,则必须将它们包装到另一个函数中:

$("select#test").change(function() {
    myHandler($(this).val());
});
$("select#test").change({msg: "ok"},  function(event) {
    myHandler(event.data.msg);
});
或者只是

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


顺便说一句,选择器最好写成
$(“#test”)
。ID是(应该)唯一的。无需在标记名前加前缀。

需要注意的是,myHandler接收的$(this)在以这种方式调用时是不同的。如果您需要原始$(此),可以在“确定”之后将其作为参数传递。