Привет
<option data-mode="1" value="1">...</option>
почему
$(this).val(); / 1
а
$(this).data('mode'); / undefined
?
Потому что у тебя обработчик на самом селекте висит (<select>), и в данном случае this на этот селект ссылается, выбранное значение можно из поля value прочитать, а дата-атрибута у селекта нет, только у опций