服务器正在运行Ruby on Rails。 Javascript是使用Coffeescript编写的。使用contextMenu插件和fileTree插件,不会丢失可拖动的支持
我目前使用带有上下文菜单插件的jQuery文件树插件。目前两者都在工作,只有一个小问题。我也在文件树中启用了可拖动的功能,并且在释放左键单击后它不会取消。在下图中,鼠标已经释放。
Mouse up but draggable hasn't cancelled
这是上加载的页面有一个DIV:
<div id="file_tree"></div>
而且这个div被另一个页面,从不同的控制器填补。该代码是:
<ul class="jqueryFileTree" style="display: none;">
<% @contents[0].each do |directory| %>
<li class="directory collapsed"><a href="#" rel="<%= @root + directory %>/"><%= directory %></a></li>
<% end %>
<% @contents[1].each do |file| %>
<li class="file ext_<%= File.extname(file)[1..-1] %>"><a href="#" rel="<%= @root + file %>"><%= file %></a></li>
<% end %>
</ul>
本页面还加载了可拖动代码:
$ ->
@settings =
revert: true
helper: "clone"
containment: "#file_tree"
axis: "y"
scroll: true
cursorAt:
top: -2
$(".directory").draggable(@settings)
$(".file").draggable(@settings)
并从上下文菜单中加入这样的:
$("#file_tree").contextMenu { menu: 'filetree_context_menu' }, (action, element, position) =>
@on_context_menu(action, element, position, data.root_directory)
哪里@on_context_menu是一个简单的函数(它虽然没有关系到这个问题)。
如果您在#file_tree div外部单击,则可以停止该问题(克隆会恢复其原始状态)。但是,似乎click,mousedown和mouseup事件处理正确。此外,上下文菜单没有问题,不会引发可拖动的问题。
关于我寻找修复,我什么也没找到。文件树插件有一个很好的信息量,但上下文菜单似乎没有任何东西(必须不受欢迎?)。没有一个在同一时间。如果您需要其他信息,请说明。
编辑:我发现这实际上是因为插件需要在mouseup事件中调用e.stopPropogation()以防止它打开真正的上下文菜单。任何人都知道如何手动执行stopdrag()事件?如果我打电话给$(this).trigger('stopdrag'),如果你打算这么做,它就不起作用。