jQuery .data(key)不检索更新的.data(键,值)数据

时间:2015-04-17 10:28:22

标签: javascript jquery

我已经知道jQuery.data()与.attr()不一样了,并且它不会更新实际的HTML,但是我使用.data(键,值)然后我不能用.data(key)检索更新的更改,这很奇怪,因为我过去做过很多。经过几个小时,我没有想法。

起初我将字符串化并将对象解析为JSON但后来我读到Jquery自动执行此操作,因此它是不必要的并且可能具有破坏性。

HTML:

<div id="invitationsLooper" class="looper slide" data-looperdata="{}">     
(...stuff)
    <div id="platform_selector"> </div>
</div>

JS:

<script>
 var $looper = jQuery("#invitationsLooper");
 $looper.data("looperdata",{id:"invitationsLooper"});
 console.log("Initializing looperdata: "+$looper.data("looperdata"));

  $looper.on("platform_reset", function (event) {
        //var $looper = jQuery("#invitationsLooper");

        console.log("[Platform reset] event");
        console.log($looper);
        console.log($looper.data("looperdata"));
        var looperdataobject = $looper.data("looperdata");
        console.log(looperdataobject);

        looperdataobject.idplatform = null;
        $looper.data("looperdata", looperdataobject);
        console.log(looperdataobject);
    });

 </script>

该事件在另一个脚本中点击此行启动:

<script>
    jQuery("#platform_selector").trigger("platform_reset");
</script>

Firebug控制台输出:

  

初始化looperdata:[object Object]

     

- &gt; platfom_reset事件已解雇

     

[平台重置]事件

     

对象[DIV#invitationsLooper.looper.slide]

     

     

     

TypeError:null没有属性looperdataobject.idplatform = null;

1 个答案:

答案 0 :(得分:0)

我发现了这个问题,虽然它非常具体。在脚本的开头,我初始化了looper.js library,如下所示:

jQuery('.looper').looper({interval: false})

我知道这个调用修改了DOM,但是我假设如果在调用之后所有的.data()更改都是安全的。 它不是。它必须有一些延迟修改(可能是一个window.ready调用),因为如果我通过代码触发事件,它可以工作,但是当我通过点击完成它(在所有内容加载后) ),它没有。

我评论说这条线和一切顺利。我认为必须格外小心。

抱歉你的时间。我非常感谢你的帮助。

PS:我对Stack Overflow很新,所以我不知道是否应该删除或重命名这个问题。请告诉我。