Javascript 在页面中更改数据id后,如何在jQuery中选择数据id?
如链接所示,我希望每次单击按钮时数据id增加1。当你点击它时,数据id确实增加到了2,你可以在Chrome中使用“Inspect Element”看到它。但是下次我点击它时,弹出窗口仍然是1,但不是预期的“2”。为什么Javascript 在页面中更改数据id后,如何在jQuery中选择数据id?,javascript,html,ajax,jquery,Javascript,Html,Ajax,Jquery,如链接所示,我希望每次单击按钮时数据id增加1。当你点击它时,数据id确实增加到了2,你可以在Chrome中使用“Inspect Element”看到它。但是下次我点击它时,弹出窗口仍然是1,但不是预期的“2”。为什么 尝试使用相同的方法获取和设置数据属性(或) 通过将var放在id前面,避免使用隐式声明的全局变量 因此,您的代码应该如下所示: $('.click').click(function() { var id = $(this).data('id'); alert(
var
放在id
前面,避免使用隐式声明的全局变量$('.click').click(function() {
var id = $(this).data('id');
alert(id);
$(this).data('id', id+1);
});
由于您使用
.data
来获取值,它将被导入jQuery.cache
,因此未来的.data()
获取将从那里而不是从属性中获取
因此,如果希望下一个“get”获取更新的值,则需要使用.data()
进行更新
$('.click').click(function() {
id = $(this).data('id');
alert(id);
$('.click').data('id' , id+1);
});
或者更好,只需使用
.attr()
,因为它速度更快,内存开销更少(因为该值在jQuery.cache
中不重复)
如果您需要保留原始对象,或者使用更复杂的对象(如从JSON值创建的对象),我建议仅使用
.data()
。必须使用parseInt(id)求和,而不是concatenate@Cyrus:True。不直接相关,但需要对其进行修复才能获得2
结果。
$('.click').click(function() {
id = $(this).data('id');
alert(id);
$('.click').data('id' , id+1);
});
$('.click').click(function() {
id = $(this).attr('data-id');
alert(id);
$('.click').attr('data-id' , id+1);
});