我有一个元素:
<a id="contactUsLink" class="modalButton homepageButton modalOpenButton" href="#" data-modal='{ldelim} "target" : "#contactDialogue", "action" : "open" {rdelim}'>Contact Us</a>
我为jQuery click事件分配了一个闭包
$('#contactUsLink').click(function(e) {
e.preventDefault();
var data = $(this).data('modal');
modeless.modal(this);
});
我在命名空间的javascript函数nameless.modal()
中处理数据属性,我使用DOM
执行各种操作,包括动画各种div等。
当我再次点击链接时,可变数据将返回另一个元素的数据属性。
我很困惑。显然我的其他代码在某种程度上干扰了jQuery,但是因为我所有的变量和函数名都在我自己的命名空间中......怎么样?
错过了其他什么?
答案 0 :(得分:0)
似乎jQuery缓存了数据属性。
第3614行 - https://code.jquery.com/jquery-2.1.4.js
不知道为什么它会返回另一个对象的缓存数据,但我怀疑我在实现中发现了缓存检索数据的错误。
jQuery.removeData()将清除此缓存。
答案 1 :(得分:0)
jQuery不会动态更新其内部data
。使用数据属性时,我会改为定位属性。
结帐this demo:
// jQuery data - does not update dynamically
$(this).data('test');
// element attribute - does update dynamcially
$(this).attr('data-test')