服務器正在運行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'),如果你打算這麼做,它就不起作用。