2010-07-12 3 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, будучи input в функции является DOM элемент, но .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 загружен и кэширован один раз, например).

Как и в сторону, идентификаторы должны быть уникальными , так что не нужно быть относительным вообще, оба из приведенных выше примеров можно просто:

var val = $('#amountField').val(); 
Смежные вопросы