如何将 DOM 对象的引用传递给 jQuery 函数?

发布于 2024-09-08 18:25:29 字数 332 浏览 7 评论 0原文

我想将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无力看清 2024-09-15 18:25:29

您需要将其包装起来,如下所示:

function change_total_price(input) {
  var val = $(input).closest('div').find('#amountField').val();
}

this,函数中的input是一个DOM元素,但是.closest() 是一个 jQuery 对象 方法,因此您需要包装它在 $() 中获取 jQuery 对象(如果您想使用它) 。

或者在标记之外执行此操作,如下所示:

$(function() {
  $("#priceField").change(function() {
    var val = $(this).closest('div').find('#amountField').val();
  });
});

这种方式绑定 change 事件 处理程序到 id="preiceField" 元素,您可以删除内联 onchange="change_total_price(this)"...它既干净又容易维护(例如,可以在页面外部加载并缓存一次的外部 .js 中)。

顺便说一句,ID 应该是唯一,所以它根本不需要是相对的,上面的两个例子都可以是:

var val = $('#amountField').val();

You need to wrap it, like this:

function change_total_price(input) {
  var val = $(input).closest('div').find('#amountField').val();
}

this, being input 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:

$(function() {
  $("#priceField").change(function() {
    var val = $(this).closest('div').find('#amountField').val();
  });
});

This way binds the change event handler to the id="preiceField" element, you can remove the in-line onchange="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:

var val = $('#amountField').val();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文