在数据属性jquery中获取错误的值

Mam*_*men 7 javascript jquery

我有一个数据属性的div

<div class='p1' data-location='1'></div>
Run Code Online (Sandbox Code Playgroud)

我有脚本喜欢

$('button').click(function(){

    var loc = $('.p1').data('location');
    alert('data location is'+loc);//SHOW THE DATA

    var num = 10;
    var count = loc;
    var element = $('.p1');
    var intv = setInterval(anim,1000); 
    function anim(){
        count++;
        num--;
        if(count==37){count = 1;}
        if(num==1){clearInterval(intv);}
        $(element).animateCSS('bounceOut',{
            callback: function(){
                $(element).attr('data-location',count);
                $(element).animateCSS('bounceIn');
            }
        });

    }
    anim();

});
Run Code Online (Sandbox Code Playgroud)

使用上面的脚本data-location属性将更新为10,但如果我再次单击该按钮,数据位置仍然是1

Bar*_*mar 9

第一次使用.data()访问data-*属性时,该属性的值由jQuery在内部.data()缓存,然后使用缓存.更新属性.attr()不会更新缓存,您需要使用.data()它来更新它.这就是你需要使用的原因

$(element).data('location', count);
Run Code Online (Sandbox Code Playgroud)

更新它.


Bar*_*haj 3

        $(element).attr('data-location',count);
Run Code Online (Sandbox Code Playgroud)

不同于

        $(element).data('location',count);
Run Code Online (Sandbox Code Playgroud)

因此,请使用第二个。

检查数据与属性以了解详细信息。