Mootools: проблемы с перетаскиванием
Я задал этот вопрос на форумах на веб-сайте Mootools, и один человек сказал, что мой выбор класса был поврежден до того, как пришел администратор и изменил статус моего сообщения на недействительный. Излишне говорить, что это не сильно помогло. Затем я отправил сообщение в группу Google для Mootools, но без ответа. У меня вопрос: почему не срабатывают события enter, leave, drop для моих элементов .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>
Ответов (2)2
Хорошо, похоже, здесь есть пара проблем. Насколько я могу судить, в mootools не существует такого понятия, как "отбрасываемый". Это означает, что такие события, как «вход», «выход» и «сброс», работать не будут. (Это события на объекте перетаскивания)
Если вы измените эти имена на события, которые есть у элементов в mootools (например, события DOM), ваш код будет работать отлично. Например, если вы измените «enter» и «leave» на «mouseover» и «mouseout», ваши события срабатывают без проблем. (Opera 9.51 в Windows Vista)
Похоже, это самая интересная строка в документации, которая описывает статистику использования событий DOM.
http://docs.mootools.net/Element/Element.Event#Element:addEvents
Также на этой странице есть ссылка на события, которые могут иметь обычные элементы.
http://www.w3schools.com/html/html_eventattributes.asp
Тем не менее, совет "TG in SD", который дал вам на форумах , вероятно, лучший. Если можете, не беспокойтесь об использовании этих событий. Поместите все, что вам нужно, в перетаскиваемый объект и избавьте себя от всех этих хлопот.
Согласно документации Mootools , " droppables
" является одним из вариантов, ожидаемых Drag.Move
классом. Фактически, это массив элементов, которые взаимодействуют с элементом, когда он запускает событие " drop
," " enter
," и " leave
".