2010-07-12 130 views
2

我想將DOM對象的引用傳遞給jQuery函數。但是該函數不會獲得對DOM對象的引用。它確實得到了一個包含DOM對象的字符串。所以我得到以下示例的錯誤如何將DOM對象的引用傳遞給jQuery函數?

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

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

回答

12

你需要用它,就像這樣:

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

this,在功能上是inputDOM元素,但.closest()jQuery對象方法,所以你需要如果你想使用它,將它包裝在$()中以獲得一個jQuery對象。

或者做您的標記之外,像這樣:

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

這樣綁定change event處理到id="preiceField"元素,你可以刪除在線onchange="change_total_price(this)" ...這既是清潔和更容易維護(例如,可以在加載和緩存外部頁面的外部.js中)。

順便說一句,ID應該是唯一,所以它並不需要是相對的,在所有的,上面的兩個例子可以只是:

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