javascript - 如何使用带有 jQ​​uery 的 change() 方法参数的函数?

标签 javascript jquery event-handling

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

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

我已经试过了:

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

和警报报告 [object Object]

最佳答案

参见 event.data .数据不是作为参数传递给处理程序,而是作为事件对象的属性:

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

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

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

或者只是

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

顺便说一句。选择器最好写成 $('#test')。 ID 是(应该)唯一的。无需在标签名称前加上标签名称。

关于javascript - 如何使用带有 jQ​​uery 的 change() 方法参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4897368/

相关文章:

javascript - 从嵌套数组中删除元素

javascript - 用户输入字段的下拉菜单出错

javascript - Socket.io - 无法向房间发送消息

javascript - 如何在元素附近的适当位置显示提示?

javascript - 如何使用具有 "update"函数的事件处理程序来启动和停止秒表

c# - 我应该如何为我的 C# Windows 窗体应用程序编写我的事件处理程序?

Laravel 5 - 事件处理程序和监听器之间的混淆

javascript - Coldfusion 使用 ajax 使用下拉选择填充表单

javascript - 如何理解 `JavaScript static methods are also not callable when the class is instantiated`

Javascript/JQuery Datagrid 在数据表中显示/编辑/输入