Дима Турков, это не в рамках спора, но всё же смысл в логике: вам нужно привязать произвольное значение к элементу, и вы вместо того, чтобы банально сохранять прямо в него, делаете вызов функции из сторонней библиотеки и создаёте отдельные структуры данных для хранения.
"Если вам так нравится, пожалуйста, я не против))" - ну так я же не собираюсь вас убеждать ни в чем; просто поинтересовался почему вы выбрали такой путь, какие вы видите в нём преимущества, может я тоже чего-то не понимаю.
Дима Турков, this._old_value - свойство объекта, связанного с текущим инпутом. Можно было его назвать как угодно, хоть "старое значение инпута"
"Я создаю дата атрибут с указанным значением." - не, атрибут не создается, вы создаёте свойство в скрытом объекте который за вас создаёт jQuery, а я создаю свойство прямо в элементе (грубо говоря). Разницы я не вижу никакой, поэтому и спрашиваю.
Дима Турков, просто интересуюсь - почему вы решили сохранить так - $(this).data('old-value', $(this).val());, а не так - this._old_value = $(this).val();?
Ну, в целом способ норм, только проверять надо не текст, а какие ноды попали в selection. Это проще - достаточно проверить выделены ли целевые ноды, и всё.
У объекта событие есть поле trusted, которое содержит true только если событие сгенерировано в результате соответствующих действий пользователя. То есть события разделяются на доверенные и не доверенные.
albel31, открывашка должна быть <a>, а не <label>, и у неё должен быть не for, а href="#win1". К тому же с приведенным кодом у меня не работает закрытие модалки по клику на оверлей, вероятно вы просто потеряли нужную часть кода.