Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
如何将DOM对象的引用传递给jQuery函数?_Jquery_Pass By Reference - Fatal编程技术网

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

如何将DOM对象的引用传递给jQuery函数?,jquery,pass-by-reference,Jquery,Pass By Reference,我想将DOM对象的引用传递给jQuery函数。但是,该函数不获取对DOM对象的引用。它确实会得到一个包含DOM对象的字符串。所以我在下面的例子中得到了一个错误 <input type="text" size="30" onchange="change_total_price(this)" id="priceField"> 你需要像这样包装它: function change_total_price(input) { var val = $(input).closest('div

我想将DOM对象的引用传递给jQuery函数。但是,该函数不获取对DOM对象的引用。它确实会得到一个包含DOM对象的字符串。所以我在下面的例子中得到了一个错误

<input type="text" size="30" onchange="change_total_price(this)" id="priceField">

你需要像这样包装它:

function change_total_price(input) {
  var val = $(input).closest('div').find('#amountField').val();
}
$(function() {
  $("#priceField").change(function() {
    var val = $(this).closest('div').find('#amountField').val();
  });
});
this
,作为函数中的
input
是一个DOM元素,但它是一个jQuery对象方法,因此如果您想使用它,需要将它包装起来以获取jQuery对象

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

function change_total_price(input) {
  var val = $(input).closest('div').find('#amountField').val();
}
$(function() {
  $("#priceField").change(function() {
    var val = $(this).closest('div').find('#amountField').val();
  });
});
通过这种方式将处理程序绑定到
id=“preiceField”
元素,您可以删除内嵌的
onchange=“change\u total\u price(This)”
…它既更干净,也更易于维护(例如,可以在页面外部的
.js
中加载并缓存一次)

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

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