[英]Unable to set div.style.left and div.style.top css properties via JavaScript
[英]Unable to set top/left properties on dynamically generated div through jquery
已经通过该网站,互联网以及任何运气进行了一次又一次的搜索。
我有一组通过JQuery
通过从原始html源克隆它们而动态生成的div。 尽管我可以设置并使用原始div的possitioning属性,但是尽管我可以毫无问题地选择它们,但克隆的属性根本没有响应( height
和width
属性均无响应)。
这是原始的HTML
:
<div style="width: 504px; height: 252px; left: 333px; top: 135px;" id="mainHolder">
<div style="width: 504px; height: 252px;" id="holder">
<div style="width: 126px; height: 63px;" id="idTile_5369" class="tile"></div>
<div style="width: 126px; height: 63px;" id="idTile_5373" class="tile"></div>
<div style="width: 126px; height: 63px;" id="idTile_5377" class="tile"></div>
<div style="width: 126px; height: 63px;" id="idTile_5381" class="tile"></div>
</div>
<div id="holderHandler"></div>
</div>
以下是适用的CSS
规则:
#mainHolder{
position: relative;
}
#holder, #holderHandler, .tile, .tileHandler{
position: absolute;
}
这里的JS
代码:
getDataJsonServer('tiles.php', (function(data){ //getDataJsonServer --> custom function to obtain json data from the server through the JQuery getJson method
var mainHolder=$('#mainHolder');
var tilesHandler=$('#holder .tile', this.mainHolder).clone();
tilesHandler.addClass('tileHandler');
tilesHandler.removeClass('tile');
tilesHandler.attr('id', function(i, idTileHandler){ return 'idTileHandler_'+extractId(idTileHandler); }); //extractId --> custom function that extracts the id
$('#holderHandler', this.mainHolder).append(tilesHandler);
for(var tile in data){
$('#idTile_'+data[tile].idTile, this.mainHolder).css({left: data[tile].position.left, top: data[tile].position.top});
$('#idTileHandler_'+data[tile].idTile, this.mainHolder).css({left: data[tile].positionHandler.left, top: data[tile].positionHandler.top});
}
}
最后,在这里, Json
数据由tiles.php
:
"data": [{
"idTile": 5369,
"position": {
"left": -62,
"top": 0
},
"positionHandler": {
"left": -62,
"top": 0
}
},
"idTile": 5373,
"position": {
"left": -62,
"top": 0
},
"positionHandler": {
"left": -62,
"top": 0
}
},
"idTile": 5377,
"position": {
"left": -62,
"top": 0
},
"positionHandler": {
"left": -62,
"top": 0
}
},
"idTile": 5381,
"position": {
"left": -62,
"top": 0
},
"positionHandler": {
"left": -62,
"top": 0
}
}]
尽管for/in
循环中的最后一行运行正常,但另一行只是不设置left
和top
属性,而不会引发任何错误消息。
为什么会发生这种情况? 是否由于我怀疑第二个div是动态生成的事实? 我该如何解决?
编辑:
tiles.php
的Json对象 this.tilesHandler
通过this.mainHolder
在for/in
块(勘误表)。 注意并非一定,如果id
的的clone
倒是元件已经被改变或不以上述片,但出现可能已被改变,使得没有2 id
的与文件相同的值,之后.clone()
另外,不确定在哪里定义data
? 是tile
的元素DOM
style
属性?
请说明什么是data
和tile
变量。 谢谢
也许第一次尝试引用css
属性?
尝试
for(var tile in data){
$('#idTile_'+data[tile].idTile, this.tilesHandler).css({"left": data[tile].position.left, "top": data[tile].position.top});
$('#idTileHandler_'+data[tile].idTile, this.tilesHandler).css({"left": data[tile].positionHandler.left, "top": data[tile].positionHandler.top});
}
最后,尽管我在发布之前进行了测试并再次进行了测试,但这仍然是extractId()
函数的问题。
该函数将字符串的数字id部分重绕为应有的样子,但在其前加上下划线字符。 因此,最后,我得到了带有双下划线的id的克隆div。
给您带来的不便,我们深表歉意。感谢您的努力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.