У меня очень странная проблема. Я не уверен, почему $.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>
Вы должны установить данные с помощью .data()
$('#submit').data('price',$(this).val());
Демо --->
http://jsfiddle.net/gv5cR/2/
data-*
используется только для инициализации значения данных, если он не найден во внутреннем кэше jQuery... после копирования значения в кеш данных данных jQuery любое изменение, внесенное в атрибут, не будет отражено в значении данных jQuery,
Если вы хотите обновить значение в данных jQuery, вам придется использовать данные api вместо изменения data-*
.
Демо: скрипка
использовать как
$('#submit').click(function(){
$('#result').html($(this).attr('data-price'));
});
Поскольку вы использовали .attr()
для установки значения data-price
, вам нужно использовать .attr()
вместо .data()
чтобы получить это значение:
$('#result').html($(this).attr('data-price'));
.data()
?$('#submit').data('price',$(this).val());