Jquery .css('top')返回undefined

时间:2010-11-17 20:37:28

标签: javascript jquery dom

以下是我的应用程序构建方式的简要说明:

元素是动态创建的。所有元素都是可拖动和可调整大小的。我创建了一个在单击按钮时运行的函数。这是功能:

$( '#save_canvas' ).click( function(e){
      var _tmpArray = [];  //Temp Array
      var i = 0;

      $( '#canvas' ).children('.elem').each(
      //$('.elem').each(
         function(){
            _tmpArray = [];   //Temp Array
            _id = $(this).attr('id');

            _top = $( '#' + _id ).css('top');
            _left = $( '#' + _id ).css('left');
            _height = $( '#' + _id ).css('height');
            _width = $( '#' + _id ).css('width');
            _tmpArray[0]   = _id;
            _tmpArray[1]   = _height;
            _tmpArray[2]   = _width;
            _tmpArray[3]   = _top;
            _tmpArray[4]   = _left;
         }
      );
   });

该功能对于第一个元素(第一个孩子)非常适用。但不是其余的。这是一个创建了3个元素的数组的document.write输出:

== LEGEND ==
元素Id
高度
宽度
顶部
左郎

textblock_1
50px
150px
262px
100px

textblock_2
undefined
undefined
undefined
undefined

textblock_3
undefined
undefined
undefined
undefined

我在网上进行了广泛的搜索,无法为我的生活找到这个...请帮忙吗? :)

2 个答案:

答案 0 :(得分:1)

您是否在后续文本块中设置了ID?您不需要连续使用“$('#'+ _id)”,只需使用$(this)。

答案 1 :(得分:0)

非常感谢大家帮忙找到这段代码的问题!

结束这个问题部分是因为我调用元素的方式 - 我必须弄清楚为什么还要 - 但也因为我必须使用.height()和.width():

_top = $( this ).css('top');
_left = $( this ).css('left');
_height = $( this ).height();
_width = $( this ).width();

再一次,谢谢! :)