jQuery $ .data () не возвращает правильное значение при обновлении атрибута данных

0

У меня очень странная проблема. Я не уверен, почему $.data не возвращает правильное значение после обновления данных, даже если элемент имеет правильное значение в firebug.

Демо: http://jsfiddle.net/gv5cR/

<div>
    <input type="text" name="price" id="price"/>
</div>
<button type="button" id="submit" data-price="100">Submit</button>
<div id="result"></div>
<script>
$(document).ready(function(){
    $('#price').change(function(){

        $('#submit').attr('data-price',$(this).val());

    });

    $('#submit').click(function(){
        $('#result').html($(this).data('price'));
    });

});
<script>
  • 1
    Почему бы не обновить данные, используя саму .data() ?
  • 0
    Я имею в виду $('#submit').data('price',$(this).val());
Показать ещё 1 комментарий
Теги:

4 ответа

0
Лучший ответ

Вы должны установить данные с помощью .data()

$('#submit').data('price',$(this).val());

Демо ---> http://jsfiddle.net/gv5cR/2/

  • 0
    классно. Спасибо.
  • 0
    @JonFabian Приветствия !!
0

data-* используется только для инициализации значения данных, если он не найден во внутреннем кэше jQuery... после копирования значения в кеш данных данных jQuery любое изменение, внесенное в атрибут, не будет отражено в значении данных jQuery,

Если вы хотите обновить значение в данных jQuery, вам придется использовать данные api вместо изменения data-*.

Демо: скрипка

  • 0
    Спасибо за ваш ответ
0

использовать как

$('#submit').click(function(){
    $('#result').html($(this).attr('data-price'));
});
0

Поскольку вы использовали .attr() для установки значения data-price, вам нужно использовать .attr() вместо .data() чтобы получить это значение:

$('#result').html($(this).attr('data-price'));

Обновленный скрипт

Ещё вопросы

Сообщество Overcoder
Наверх
Меню