ムーツール:ドラッグアンドドロップの問題
-
08-06-2019 - |
質問
Mootools Web サイトのフォーラムにこの質問をしたところ、ある人は、管理者が来て私の投稿ステータスを無効に変更する前に、私のクラスの選択が破損していたと言いました。言うまでもなく、これはあまり役に立ちませんでした。その後、mootools の Google グループに投稿しましたが、応答はありませんでした。私の質問は、「.drop」要素に対して「enter」、「leave」、「drop」イベントが発生しないのはなぜですか?.drag 要素のイベントは機能しています。
<title>Untitled Page</title>
<script type="text/javascript" src="/SDI/includes/mootools-1.2.js"></script>
<script type="text/javascript" src="/SDI/includes/mootools-1.2-more.js"></script>
<script type="text/javascript" charset="utf-8">
window.addEvent('domready', function() {
var fx = [];
$$('#draggables div').each(function(drag){
new Drag.Move(drag, {
droppables: $$('#droppables div'),
onDrop: function(element, droppable){
if(!droppable) {
}
else {
element.setStyle('background-color', '#1d1d20');
}
element.dispose();
},
onEnter: function(element, droppable){
element.setStyle('background-color', '#ffffff');
},
onLeave: function(element, droppable){
element.setStyle('background-color', '#000000');
}
});
});
$$('#droppables div').each(function(drop, index){
drop.addEvents({
'enter': function(el, obj){
drop.setStyle('background-color', '#78ba91');
},
'leave': function(el, obj){
drop.setStyle('background-color', '#1d1d20');
},
'drop': function(el, obj){
el.remove();
}
});
});
});
</script>
<form id="form1" runat="server">
<div>
<div id="draggables">
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
<div class="drag"></div>
</div>
<div id="droppables">
<div class="drop"></div>
<div class="drop"></div>
<div class="drop"></div>
<div class="drop"></div>
<div class="drop"></div>
<div class="drop"></div>
</div>
</div>
</form>
解決
さて、ここにはいくつか問題があるようです。私の知る限り、mootools には「ドロップ可能」などというものはありません。これは、「enter」、「leave」、「drop」などのイベントが機能しないことを意味します。(これらはドラッグ オブジェクト上のイベントです)
これらの名前を mootool の要素が持つイベント (DOM イベントなど) に変更すると、コードは完全に機能します。たとえば、「enter」と「leave」を「mouseover」と「mouseout」に変更すると、イベントは問題なく起動します。(Windows Vista 上の Opera 9.51)
これは、DOM イベントを使用する統計についてのドキュメントの関連する行のようです。
http://docs.mootools.net/Element/Element.Event#Element:addEvents
また、そのページには、通常の要素が持つことができるイベントへのリンクがあります。
http://www.w3schools.com/html/html_eventattributes.asp
しかし、 「TG in SD」がナブルフォーラムであなたに与えたアドバイス おそらく最高です。可能であれば、これらのイベントをわざわざ使用しないでください。必要なことをすべてドラッグ可能なオブジェクトに入れておけば、この手間が省けます。
他のヒント
によると ムーツールのドキュメント, "droppables
" は、 Drag.Move
クラス。実際、これは、要素が起動したときに要素と対話する要素の配列です。drop
," "enter
、" そして "leave
" イベント。