到目前为止,已经在网站上以及互联网上搜索和搜索过任何运气。
我通过JQuery
通过从原始html源克隆它们来生成一组动态生成的div。
虽然我能够设置和播放来自原始div的可能属性,但克隆的那些根本没有响应(既不属于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
this.tilesHandler
区块(勘误表)中this.mainHolder
更改了for/in
。答案 0 :(得分:0)
注意不确定id
'd元素的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});
}
答案 1 :(得分:0)
最后,这是extractId()
功能的一个问题,尽管我在发布之前已经过测试和重新测试。
该函数正在返回字符串的数字id部分,但它前面是一个下划线字符。所以,最后,我得到了带有双下划线的id的克隆div。
很抱歉给您带来不便,感谢您的努力。