jsPlumbとjQueryEasyUIで実際の問題が発生しました。
ここで何が起こりますか。EasyUIを使用しているWebサイトがあり、それにjsPlumb接続を追加しようとしましたが、この接続が希望どおりに動作していません。
jsPlumbのみを使用してデモを準備しましたが、機能しています。しかし、既存のサイトに追加すると、接続が機能しません。
紛争がどこにあるかを調査した後、私はこれに行き着きました:
EasyUIをロードしない限り、jsPlumbは機能します。EasyUIをロードした後:
<script type="text/javascript" src="jquery.easyui.min.js"></script>
- ソースエンドポイントをドラッグして新しい接続を作成できません(エンドポイントをドラッグしましたが、新しい接続が作成されました)
- エンドポイントは、それらが属するdivには従いません(マウスでポイントすると、エンドポイントは正しく配置されます)
jsFiddleを使用して2つのデモを準備し、意味を示します。この2つのサンプルが異なるのは、jquery.easyuiの外部リソースだけだと思います。
- 作業中のjsPlumbフルスクリーン結果
- 動作しない:フルスクリーンの結果
どうすればこれを解決できますか?たぶんあなたの何人かはどこが対立しているのか知っています。私のサイトは、この時点でEasyUIを他のものに変更することになっています。これほど強力なツールキットが見つからないため、jsPlumbを使用したいと思います。
編集:
提案されたように、ドラッグ可能をオーバーライドしようとしましたが、部分的には機能しますが、希望どおりには機能しません。
(function($){
var __old_draggable = $.fn.draggable;
$.fn.draggable = function(){
if(this.hasClass('_jsPlumb_endpoint') || this.hasClass('window')){
return;
}
return __old_draggable.apply(this, arguments);
};
$.extend($.fn.draggable,__old_draggable);
})(jQuery);
部分的に:
- エンドポイントはドラッグできなくなりました-それは良いことです、
- しかし、彼らは新しい接続を作成しません、それは悪いことです。
- それらは、接続されているウィンドウには従いません。
さらに今、私は今、そのEasyUIがドラッグ可能なjQueryをオーバーライドし、これがこの奇妙な(私にとって)振る舞いを引き起こします。悲しいことに、ドラッグ可能なメソッドを元のjQueryメソッドにすることに問題があります...だから、私の問題に対する他の解決策を楽しみにしています
編集:EasyUIとその動作でドラッグ可能およびドロップ可能オーバーライドに関連するすべてを削除します。問題は、easyuiスクリプトではなくプログラムでこれを行う方法です。誰かが新しいバージョンに更新し、すべてが機能しなくなるためです...