Javascript 为什么可以';t我的jQuery';s.data()用法在本例中是否存储我的对象?

Javascript 为什么可以';t我的jQuery';s.data()用法在本例中是否存储我的对象?,javascript,jquery,scope,garbage-collection,overlay,Javascript,Jquery,Scope,Garbage Collection,Overlay,我试图使用jQuery的.data()方法将覆盖对象存储到目标元素,但是每次运行此代码时,目标元素都不存储任何覆盖。这是我的密码: var helper = { // ... overlay: function ($target_element, zIndex) { var target_dimension = [$target_element.width(), $target_element.height()]; var target_offset

我试图使用jQuery的
.data()
方法将覆盖对象存储到目标元素,但是每次运行此代码时,目标元素都不存储任何覆盖。这是我的密码:

var helper = {  // ...      
overlay: function ($target_element, zIndex) {
        var target_dimension = [$target_element.width(), $target_element.height()];
        var target_offset = $target_element.offset();
        var $screen = $("<div class='overlay'></div>")
                        .css({
                          "width": target_dimension[0],
                          "height": target_dimension[1],
                          "background-color": "#554A4A",
                          "opacity": 0.8,
                          "zIndex": zIndex,
                          "position": "absolute",
                          "top": target_offset.top,
                          "left": target_offset.left
                        });
        $target_element.append($screen);
        $target_element.data('overlayobj', $screen); // Here is where my confusion is.
        return $screen;
      },
// ...
}
$(document).ready(function() {
    helper.overlay($('div#test:last'), 1000);
    $('div#test').data('overlayobj'); // I expected to get back the overlay object, but always got an empty {} here.
});
var-helper={/。。。
覆盖:函数($target_元素,zIndex){
var target_dimension=[$target_element.width(),$target_element.height()];
var target_offset=$target_element.offset();
变量$screen=$(“”)
.css({
“宽度”:目标尺寸[0],
“高度”:目标尺寸[1],
“背景色”:“554A4A”,
“不透明度”:0.8,
“zIndex”:zIndex,
“位置”:“绝对”,
“顶部”:目标偏移量。顶部,
“左”:目标偏移量。左
});
$target_element.append($screen);
$target_element.data('overlayobj',$screen);//这就是我的困惑所在。
返回$screen;
},
// ...
}
$(文档).ready(函数(){
覆盖($('div#test:last'),1000);
$('div#test').data('overlayobj');//我本想得到overlay对象,但这里总是得到一个空的{}。
});

是什么让您认为它没有存储它?没有什么比这更值得一提的了。最好是使用堆栈片段(工具栏按钮)创建一个示例来演示问题。似乎有许多div具有相同的id…;)@TJ.,这很容易说明问题,它总是返回一个空的{},而不是一个覆盖对象。如何制作堆栈片段?我还在熟悉这个界面,对不起。@jai:没有,只有一个id为#test的界面。@JinghuiNiu那么为什么要添加一个伪选择器
:last