潜在的なjQueryバグを見つけたのかどうかはわかりませんが、次のケースをチェックしてください。動的に属性を変更したときのjQuery data()の潜在的なバグ?
data-ajax-link
属性を動的に変更してから、値を$('something').data('ajax-link');
で取得しようとすると、動的に変更する前の値は古いものです。
これは例です。これは、クリックされたオプションをulの最初の子に設定するカスタムdropDownです。要素の名前だけでなく、第一子のデータ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)
});
あなたが別のオプションを選択した後にそれを見ることができますドロップダウンしてからテストリンクを押すと、要素が検査された場合に実際に変更されても、データajax-linkの値は元の値です。更新された値を取得するのに.attr('data-ajax-link')
を使用した場合、正常に動作します。
私はここに間違っていますか、何か間違っているのですか、これはバグですか?