サーバーはRubyonRailsで実行されています。JavascriptはCoffeescriptを使用して書かれています。
現在、コンテキストメニュープラグインでjQueryファイルツリープラグインを使用しています。両方とも現在機能していますが、1つの小さな問題があります。また、ファイルツリーでドラッグ可能を有効にしていますが、左クリックを離してもキャンセルされません。下の写真では、マウスはすでに解放されています。
マウスを上に向けますが、ドラッグ可能はキャンセルされていません
これがロードされるページには、1つの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')を呼び出すと、機能しません。