在 Jquery 中使新的 div 可拖动

Posted

技术标签:

【中文标题】在 Jquery 中使新的 div 可拖动【英文标题】:Make New Div Draggable in Jquery 【发布时间】:2011-04-02 02:06:07 【问题描述】:

我正在尝试让 jquery 添加新的 div,然后使其可拖动,但我一直在尝试并在 google 上查找,但我找不到任何内容,下面是我的代码

 $(document).ready(function() 

 $("#draggable").draggable( 
   containment: 'parent',
   handle: 'drag_border',
   drag: function(e, ui) 
          var top = ui.position.top;
          var left = ui.position.left;
          $("#top").html(top);
          $("#left").html(left);
           
       ); 
   );

       function New_Text()    
            $("<div id=\"draggable\" style=\"width: 200px; height: 50px; border:dashed thin; background-color: #fff\">Drag me</div>").appendTo("div#drag_border"); 
              

谢谢

【问题讨论】:

这只是一个sn-p,能不能多贴一些代码方便调试? 你可以在页面加载时制作 div,并在需要时隐藏它吗? @alexy13 - 我认为问题在于他稍后创建了 div,因此事件处理程序没有附加到 div,我认为 live 函数不会为此工作,但是这几乎就是他所需要的。 我的意思是发布一些html,以便我可以更轻松地找到问题。有时我不太擅长解释:P 【参考方案1】:

如果您使用jQuery UI,则创建您的元素并使其可拖动:

$("<div />").draggable();

【讨论】:

【参考方案2】:

这里的问题是您在尝试使其可拖动后创建 DIV。

jQuery 事件仅适用于 javascript 运行时存在的元素 - 可以使用 livedelegate 函数解决此问题 - 但看起来您的插件不允许这样做。

因此,如果该代码需要保持不变,请将创建 DIV 的位移动到可拖动函数上方 - 它会起作用。

【讨论】:

【参考方案3】:

我没有尝试过,但这应该可以:

function New_Text()    
  $("<div id=\"draggable\" style=\"width: 200px; height: 50px; border:dashed thin; background-color: #fff\">Drag me</div>").appendTo("div#drag_border"); 
        setTimeout(function() 
           ...
          );

         , 10);
   

你要创建div,让浏览器把它添加到DOM树中,然后调用draggable函数。

【讨论】:

【参考方案4】:

由于这里有人提到了draggable() 函数,它是一个jQuery UI 函数,这里有一个简短的操作方法:

将以下行(对 jQuery UI 的引用)添加到您的 .html 页面的头部或正文底部:

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>

现在,要让#draggable 可拖动,您可以在脚本中编写(您的脚本或对它的引用必须在对 jQuery UI 的引用之后):

$('#draggable').draggable()

【讨论】:

以上是关于在 Jquery 中使新的 div 可拖动的主要内容,如果未能解决你的问题,请参考以下文章

如何在jquery中使动态添加的列表元素可拖动?

jquery可拖动/可放置更改快照

在拖动 jquery 可拖动 div 时显示指南并进行捕捉

jQuery可拖动克隆的div

jQuery可拖动嵌套div并再次拖动

jQuery ui 可拖动元素在滚动 div 之外不能“拖动”