如何将 DOM 对象的引用传递给 jQuery 函数?
我想将 DOM 对象的引用传递给 jQuery 函数。但是该函数不会获取 DOM 对象的引用。它确实得到了一个包含 DOM 对象的字符串。所以我在以下示例中收到错误
<input type="text" size="30" onchange="change_total_price(this)" id="priceField">
。
function change_total_price(input) {
input.closest('div').find('#amountField').val());
}
I want to pass a reference of the DOM object to a jQuery function. However the function does not get a reference to the DOM object. It does get a string containing the DOM object. So i get an error on the following example
<input type="text" size="30" onchange="change_total_price(this)" id="priceField">
.
function change_total_price(input) {
input.closest('div').find('#amountField').val());
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要将其包装起来,如下所示:
this
,函数中的input
是一个DOM元素,但是.closest()
是一个 jQuery 对象 方法,因此您需要包装它在$()
中获取 jQuery 对象(如果您想使用它) 。或者在标记之外执行此操作,如下所示:
这种方式绑定
change
事件 处理程序到id="preiceField"
元素,您可以删除内联onchange="change_total_price(this)"
...它既干净又容易维护(例如,可以在页面外部加载并缓存一次的外部.js
中)。顺便说一句,ID 应该是唯一,所以它根本不需要是相对的,上面的两个例子都可以是:
You need to wrap it, like this:
this
, beinginput
in the function is a DOM element, but.closest()
is a jQuery object method so you need to wrap it in$()
to get a jQuery object if you want to use it.Alternatively do this outside of your markup, like this:
This way binds the
change
event handler to theid="preiceField"
element, you can remove the in-lineonchange="change_total_price(this)"
...it's both cleaner and easier to maintain (can be outside your page in an external.js
loaded and cached once, for example).As an aside, IDs should be unique, so it doesn't need to be relative at all, both of the above examples can just be: