Если в режиме разработчика меняем значение у value, то при нажатии кнопки это значение и покажет алерт, все логично. А вот с data уже такое не проходит, при замене его значения, он показывает значение которое загрузилось при загрузке страницы.
Я не говорю что это плохо, наоборот хорошо, но как реализован данный механизм, насколько сильно он защищает значения пользовательских атрибутов? Что то нагуглить по данному вопросу не удалось ничего.
ЗЫ: Заметил такую штуку, если загрузить страницу с исходными данными, и не нажимая на кнопку, что бы не показывались алерты изменить значение у data, то он покажит измененое значение. А если загрузить, нажать, потом изменить, нажать, покажит старое значение. Т.е. значение меняет до первого показа алерта, вернее до первого нажатия кнопки.
----- Умные мысли приходят тогда, когда все глупости уже сделаны...
SAD
Отправлено: 10 Декабря, 2015 - 17:25:58
Постоянный участник
Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009 Откуда: Днепропетровск, Украина
Помог: 75 раз(а)
менять data атрибут, который прописан в html нужно через attr('data-obj-id', значение)
data в html и data в jquery немного разные понятия
Flash_PR
Отправлено: 10 Декабря, 2015 - 17:42:06
Посетитель
Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013 Откуда: Санкт-Петербург
Помог: 6 раз(а)
SAD пишет:
менять data атрибут, который прописан в html нужно через attr('data-obj-id', значение)
Я в курсе как менять. Вопрос то в другом был. Никто не запрещает открыть пользователю в браузере режим разработчика и изменить значение. При этом при таком изменение значения, и получении его через функцию data в jquery, функция вернет старое значение. В общем вот что нарыл, это проясняет ситуацию:
Один минус (а может и не минус) — это то, что в data() сохранится только изначальное значение (кешируется), и если мы изменим значение атрибута (например, через .attr(‘data-foo-bar’, 456)), то получая .data('fooBar') увидим наше старое значение.
Это значит что если вдруг меняется значение у нашего атрибута, то брать измененое значение лучше через attr('data-obj-id'), функция data() закэширует и вернет старое значение.
SAD пишет:
data в html и data в jquery немного разные понятия
Не знаю что вы имели в виду, но когда я писал вопрос то data в html это атрибут, а data в jquery это функция получения значения по имени атрибута.
----- Умные мысли приходят тогда, когда все глупости уже сделаны...
SAD
Отправлено: 10 Декабря, 2015 - 18:26:31
Постоянный участник
Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009 Откуда: Днепропетровск, Украина
Помог: 75 раз(а)
Если Вы хотите немного обезопасить себя, то первоначальную и последующую работу с data атрибутом производите с помощью data функции. Таким образом, если изменится атрибут в html, то это никак не скажется на значении атрибута. При этом data функция покажет либо первоначальное значение, либо то, которые вы зададите сами в коде через .data('obj-id', значение). Хотя, если уже немного умнее чел будет, то и это не поможет.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.