这可能很简单,但答案在此时提到了我。我有一个按钮,我已将数据属性附加到(' data-faqid')
点击网页上的链接会更改此数据,然后当我点击该按钮时,我试图获得这样的值
$('#faqSaveBtn').click(function () {
var aFAQID = $(this).data('faqid');
saveAClassFaq(aFAQID, sf);
});
我的问题是:
我点击按钮一次,价值似乎很好。我点击应该更改此数据属性的其他按钮,它们在查看dom时似乎有效,但第二次和任何其他点击始终返回第一次单击按钮时的值。
编辑:我用这段代码更改了faqid - 在其他点击事件中
$('#faqSaveBtn').attr('data-faqid', iFaqID);
答案 0 :(得分:2)
不要使用.attr()
来设置数据属性。属性之间存在差异(这些属性仅对HTML源有效)及其结果属性(属性将从HTML源解析一次)
要更改它们,您必须使用.prop()
或更确切地说(如果是数据属性).data(name, value)
来设置属性
$('#faqSaveBtn').data('faqid', iFaqID);
答案 1 :(得分:1)
好吧我不知道为什么他删除了它或者是否有其他人但@newmediafreek发布了这个
$('#faqSaveBtn').data('faqid', iFaqID);
这似乎有效但不确定原因。显然'.attr'不再使用或折旧? (谁可以跟上?)
答案 2 :(得分:1)
问题是您正在更新元素属性,但之后尝试使用jQuery的内部.data()
。
解决方案是使用.data()
而不是.attr()
来更新值。
$('#faqSaveBtn').data('faqid', iFaqID);
会发生什么:
第一次单击该按钮时,它具有数据属性,$(this).data('faqid')
返回该值。 jQuery现在已开始在其内部数据存储中管理faqid
,它不再查看该值的元素属性。
您使用attr('data-faqid', iFaqID)
更新属性值。属性更改,但jQuery内部数据不受影响。
第二次点击,$(this).data('faqid')
返回存储在jQuery内部数据结构中的值