Вам нужно обернуть его, как это:
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();