Javascript 在页面中更改数据id后,如何在jQuery中选择数据id?

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(

如链接所示,我希望每次单击按钮时数据id增加1。当你点击它时,数据id确实增加到了2,你可以在Chrome中使用“Inspect Element”看到它。但是下次我点击它时,弹出窗口仍然是1,但不是预期的“2”。为什么

  • 尝试使用相同的方法获取和设置数据属性(或)
  • 通过将
    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);
    });