Такая ситуация является именно то, что .on()
был разработан. Читайте на этой странице для получения более подробной информации, но в основном вы можете присоединить одного прослушивателя событий к родительскому элементу всех ящиков, которые будут прослушивать события из всех из них, вместо того, чтобы прикреплять кучу слушателей к каждой коробке. Без реального кода, я просто делать предположение о структуре коды, но вот пример:
$('#ClassDetails').on('blur','input.books input.fees',function(evt) {
$currow = $(this).closest('tr');
$currow.find('.total').val(parseInt($currow.find('.fees').val()) + parseInt($currow.find('.books').val()))
CalculateGrandTotal();
});
Это будет намного эффективнее, быстрее и менее обременительным, чем прикрепление слушателя событий для каждого элемента, и намного лучше работать с imo.
В качестве бонуса, если вы хотите, чтобы прослушать несколько событий (размытие и KeyUp, скажем), вы можете сделать это, просто задав несколько разделенных пробелами события, например, так:
$('#ClassDetails').on('blur keyup','input.books input.fees',function(evt) {
Если вы» повторите это, попробуйте проверить код ключа (evt.which
) и только обработать на этом. Вероятно, вы захотите выполнить некоторую проверку, если не хотите суммировать частичные числа (добавив 1 до 15 до 150 к общей сумме).
Еще одна вещь, которую вы могли бы подумать о добавлении, в зависимости от того, сколько полей вы работаете и насколько быстрыми вещами являются as-is, вместо того, чтобы получать значения каждого элемента, которые вам нужны каждое обновление, просто отразите значения в JSON, обновите значение, которое изменилось в этом объекте, а затем запустите итоговые значения. Это было бы более сложным, но также немного быстрее, чем прямой доступ к значениям.
Вот a fiddle Я собрал для другого человека с похожим вопросом. Он использует слайдеры вместо текстовых полей для ввода, но основы одинаковы.
Я бы сделал это при смене или размытии, мог бы стать безумным, если расчеты срабатывают при каждом нажатии клавиши. – APAD1
Я не думаю, что это вопрос, который лучше. Поскольку существует только 6 строк, «keyup» не повредит, и было бы неплохо увидеть результаты при каждом изменении записи внутри входных данных. –