2


我想从数据库中获取用户列表,在表格中显示他们的名字,当你点击一个名字时,一个特殊的 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;

我用过这个很棒的拖放库。 http://www.dynamicdrive.com/dynamicindex11/domdrag/index.htm (注意我对 jQuery 有同样的问题)

当 div 由 inner.HTML 添加时,似乎拖放功能不起作用。但是,我没有看到任何其他方式。

感谢您的任何建议!

4

2 回答 2

3

问题是当您执行 Drag.init 时,您提供的 div 尚未创建。

我建议你在一个 php 循环中生成单独的 div,就像你为 th 标签所做的那样,删除你在 openDiv 开头的 innerHTML 的设置,它会起作用。

不过我不得不说,你想要的似乎是一个模态对话框,你可以在其他地方找到它已经制作并且易于使用。例如: http: //jqueryui.com/dialog/它会更容易使用,并且您可能会更喜欢最终结果。

我希望这有帮助 :)

于 2012-12-10T22:36:20.433 回答
1

尝试使用添加 div document.createElement

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创建后才初始化拖动

于 2012-12-10T21:18:55.770 回答