我正在编写一个网格来显示任务持续时间。
我在显示中有一组div:块,当文档准备就绪时,我使用javascript和jqueryui来: 1)将子div添加到块div 2)使孩子可以拖动和调整大小 这很好用。 我还想预设divs宽度(任务持续时间),但有一个奇怪的行为:文件加载后div不会调整大小。但是,只要我单击div边框以调整其大小,宽度就会“弹出”到我在脚本中使用的值。
这是简化的HTML
<div id="gridcontainer">
<div id="railing_1" class="railing"></div>
<div id="railing_2" class="railing"></div>
</div>
这是html doc头上的JS:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<script type="text/javascript">
var displayRange = { "slots": "24", "unit":"h","start":"0" };
var taskList = {
"tasks": [
{ "id":"1" , "line":"1", "start":"0","duration":"72" },
{ "id":"2" , "line":"1", "start":"73","duration":"48" },
{ "id":"3" , "line":"2", "start":"0","duration":"120" }
]
};
</script>
<script type="text/javascript">
$().ready(function(){
var railingId;
var taskId;
var jTaskId;
var oNewP;
var oText;
var displayRange = { "slots": "24", "unit":"h","start":"0" };
var taskList = {
"tasks": [
{ "id":"1" , "line":"1", "start":"0","duration":"72" },
{ "id":"2" , "line":"1", "start":"73","duration":"48" },
{ "id":"3" , "line":"2", "start":"0","duration":"120" }
]
};
//get the task list and create/append the children to each line
for(var i = 0; i<taskList.tasks.length; i++){
//alert(taskList.tasks[i].duration);
railingId = "railing_" + taskList.tasks[i].line;
taskId = "task_" + taskList.tasks[i].id;
oNewP = document.createElement("div");
oText = document.createTextNode(taskList.tasks[i].id);
oNewP.setAttribute("id",taskId);
oNewP.setAttribute("class","taskbar");
oNewP.appendChild(oText);
document.getElementById(railingId).appendChild(oNewP);
jTaskId = "#" + taskId;
$(jTaskId)
.draggable({
grid: [ 24, 44 ],
containment: "#gridcontainer",
axis: "x, y"
})
.resizable({
grid: [ 24, 0 ],
handles: "e, w",
containment: "#gridcontainer"
});
}
});
/*
Here is where I try to preset one of the tasks as an example; I've also
tried using $('#task_2').width("100");
but didn't work
*/
$('#task_2').css("width","100px");
</script>
我设置了一个问题的Jsfiddle:
您会注意到,如果您尝试调整数字2的大小,它会弹出100px,然后它可以根据可调整大小的网格调整大小(24px)
当然,我希望将任务2预设为100 ......
有什么想法吗?
为凌乱的代码道歉。
修改 这似乎与Jquery没有任何关系 - 我试过简单地使用Javascript width和setAttribute方法,而不关心JQ - 但结果是没有调整大小。 关于JQ的有趣部分是,当我点击调整大小时,div弹出到尝试的大小 - 这似乎表明文档没有正确地“重新加载”(??),当我点击div时,会发生一些魔法。 / p>
答案 0 :(得分:0)
此Stackoverflow线程上发现的问题的根源:
display:inline resets height and width
INLINE ELEMENTS没有宽度,所以这不是Javascript问题。问题出在CSS定义上。删除了显示:内联指令,它工作正常。
感谢大家在SO中发布了一些精彩的信息。