如何将jQuery获取的元素包装为含e.target的对象传入updateHandler?
解决方法:构造模拟事件对象传入updateHandler
你的问题核心是:updateHandler期望接收的是事件对象(比如表单元素触发input/change事件时的回调参数),这类对象包含target属性(指向触发事件的DOM元素),但你直接传入了DOM元素本身,所以会提示e.target未定义。
下面是几种可行的解决方案:
1. 手动构造极简模拟事件对象
直接创建一个包含target属性的对象,把DOM元素赋值给它,这是最简单的方式:
// 获取DOM元素(jQuery或原生方式都可以) const domEl = $('[name="amount"]')[0]; // 或者用原生:const domEl = document.getElementsByName('amount')[0]; // 构造符合要求的模拟事件对象 const mockEvent = { target: domEl, value: domEl.value // 可选,如果函数需要直接访问e.value的话 }; // 传入updateHandler updateHandler(mockEvent);
2. 创建真实事件对象(更贴近原生场景)
如果需要更接近浏览器原生事件的结构,可以用Event构造函数创建真实事件,再手动绑定目标元素:
const domEl = $('[name="amount"]')[0]; // 创建一个input类型的事件(可根据需求换成change等) const realEvent = new Event('input'); // 给事件对象绑定目标元素 realEvent.target = domEl; // 可选:添加value属性 realEvent.value = domEl.value; updateHandler(realEvent);
3. 若在事件回调中调用(可选场景)
如果你的逻辑是在元素的事件触发时调用updateHandler,可以直接在jQuery的事件回调中传递事件对象:
$('[name="amount"]').on('input', function(e) { // 这里的e是jQuery包装的事件对象,e.target就是对应的DOM元素 updateHandler(e); });
内容的提问来源于stack exchange,提问作者Amit Shah
相关产品推荐
相关产品推荐

