Я понятия не имею, нашел ли я потенциальную ошибку jQuery, но посмотрите на следующий случай.
Если я динамически меняю атрибут data-ajax-link
, а затем пытаюсь получить его значение с помощью $('something').data('ajax-link');
полученное значение остается прежним до его динамического изменения.
Вот пример.Это пользовательский dropDown, который устанавливает выбранную опцию на первый дочерний элемент ul.Имя элемента, а также ссылка data-ajax первого потомка обновляются значениями выбранной опции… http://jsfiddle.net/RLF3W/1/
$('.select .option').live('click', function (e) {
e.stopPropagation();
$(".select .option:not('.darr')").hide();
selectedOption = $(this).parents("div.select").find(".option:first");
$(this).siblings().show();
selectedOption.text($(this).text()).attr('data-ajax-link', $(this).data('ajax-link'));
});
$('.select .option:not(".darr")').live('click', function () {
$(this).parents("div.select").find(".option:not('.darr')").hide();
});
$(window).click(function() {
$(".select .option:not('.darr')").hide();
});
$('a#tester').live('click', function(e) {
e.preventDefault();
//var sort = $('#sortb .darr').attr('data-ajax-link');
var sort = $('#sort .darr').data('ajax-link');
$('#output').text(sort)
});
В моем примере вы можете видеть, что после выбораВ раскрывающемся списке другой параметр, а затем нажмите на тестовую ссылку. Значение data-ajax-link по-прежнему является исходным значением, даже если оно фактически изменяется при проверке элемента.Если я использую .attr('data-ajax-link')
, чтобы получить обновленное значение, оно работает нормально.
Я здесь не прав и делаю что-то не так или это ошибка?