Fle*_*exo 3 jquery pass-by-reference
我想将DOM对象的引用传递给jQuery函数.但是,该函数不会获得对DOM对象的引用.它确实得到一个包含DOM对象的字符串.所以我在下面的例子中得到一个错误
<input type="text" size="30" onchange="change_total_price(this)" id="priceField">
Run Code Online (Sandbox Code Playgroud)
.
function change_total_price(input) {
input.closest('div').find('#amountField').val());
}
Run Code Online (Sandbox Code Playgroud)
Nic*_*ver 12
你需要包装它,像这样:
function change_total_price(input) {
var val = $(input).closest('div').find('#amountField').val();
}
Run Code Online (Sandbox Code Playgroud)
this,input在函数中是一个DOM元素,但是.closest()是一个jQuery对象方法,因此$()如果要使用它,需要将其包装起来以获取jQuery对象.
或者在标记之外执行此操作,如下所示:
$(function() {
$("#priceField").change(function() {
var val = $(this).closest('div').find('#amountField').val();
});
});
Run Code Online (Sandbox Code Playgroud)
这种方式将change事件处理程序绑定到id="preiceField"元素,您可以删除内联onchange="change_total_price(this)"...它更清晰,更易于维护(例如,可以在外部.js加载和缓存一次的页面之外).
另外,ID应该是唯一的,因此它根本不需要是相对的,以上两个示例都可以是:
var val = $('#amountField').val();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10884 次 |
| 最近记录: |