我想从数据库中获取一个用户列表,在表格中显示他们的名字,当你点击一个名字,一个特殊的div与他的详细信息,你可以移动这个div甚至关闭它。
以下是编写代码的简短方案:
function openDiv(id){
document.getElementById('divsHere').innerHTML +='<div id="moveable'+id+'">
content</div>
'}<?php database connection... while{
...
<tr onclick='openDiv( ". $row['id'] ." )'> $script += 'Drag.init(document.getElementById("moveable'+ $row['id'] +'"));'
...
}?>
<div id="divsHere"></div>
echo $script;
div id="moveable'+id+'">
我用过这个很棒的拖拉库。 http://www.dynamicdrive.com/dynamicindex11/domdrag/index.htm (注意我和jQuery有同样的问题)
当div由inner.HTML添加时,似乎拖拽功能不起作用。但是,我没有看到任何其他方式。
感谢您的任何建议!
答案 0 :(得分:3)
问题是当您执行Drag.init时,您尚未创建提供它的div。
我觉得你在php循环中生成单独的div,就像你对th标签一样,删除你在openDiv开头的innerHTML的设置,它会工作。
我不得不说,看起来你想要的是一个模态对话框,你可以在其他地方找到它并且易于使用。例如:http://jqueryui.com/dialog/这将更容易合作,您可能更喜欢最终结果。
我希望这会有所帮助:)
答案 1 :(得分:1)
尝试使用document.createElement
添加div:
var newDiv = document.createElement('div'),
textNode = document.createTextNode('content');
newDiv.id = "moveable" + id;
newDiv.appendChild(textNode);
document.getElementById('divsHere').appendChild(newDiv);
并初始化拖动只需执行
Drag.init(newDiv);
如果要初始化拖动的部分代码在其范围内有newDiv
。
(可能你想创建div
并初始化在同一个地方拖动它的可能性。如果我理解你的方案是正确的,那么问题是它首先尝试初始化拖动非现有的div,然后只有当用户点击一行,调用函数openDiv
时,才会创建那些div。如果这是正确的,那么要修复它,你需要确保拖动只是初始化之后已经创建了div。)