Я хотел бы предложить еще один вариант решения этой проблемы;поскольку предложенные выше решения не решили мой сценарий.
(function()
{
// Initialize the previous-attribute
var selects = $('select');
selects.data('previous', selects.val());
// Listen on the body for changes to selects
$('body').on('change', 'select',
function()
{
$(this).data('previous', $(this).val());
}
);
}
)();
При этом используется jQuery, так что def.здесь есть зависимость, но она может быть адаптирована для работы в чистом JavaScript.(Добавьте слушателя к телу, проверьте, была ли исходная цель выбором, выполнить функцию, ...).
Прикрепив слушателя изменений к телу, вы можете быть уверены, что это сработает после определенных прослушивателей для выборок, в противном случае значение «data-previous» будет перезаписано, прежде чем вы сможете его даже прочитать.
Это, конечно, при условии, что вы предпочитаете использовать отдельных прослушивателейваш предыдущий набор и проверочное значение.Он отлично сочетается с шаблоном с единственной ответственностью.
Примечание: Это добавляет эту «предыдущую» функциональность к всем выборкам, поэтому не забудьте точно настроитьселекторы при необходимости.