Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jquery-ui: droppable & draggable. Теряются события. (https://javascript.ru/forum/jquery/3868-jquery-ui-droppable-draggable-teryayutsya-sobytiya.html)

spec2000 31.05.2009 22:32

jquery-ui: droppable & draggable. Теряются события.
 
Хочу сделать простой скрипт где драг-объект перемещается в дроп-объект и при дропе одни меняются местами. И можно было поменять так бесконечное количество раз =)
У меня получается только один раз :(
упрощенно код такой:
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery-ui.js" type="text/javascript"></script>
<script src="ui.draggable.js" type="text/javascript"></script>
<script src="ui.droppable.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){

$("img.drag").draggable({ 
        revert: 'invalid',
        helper: 'clone',
        start: function(event, ui){ posit = $(this).attr("id"); obj = this}
    });

$("img.drop").droppable({ 
         drop: 
         function(event, ui) {
         drag_object= $(obj).clone(true);
         drop_object = $(this).clone(true);
         $(obj).replaceWith(drop_object);
         $(this).replaceWith(drag_object);
         }         
    });
});

</script>

<img class="drag" src='images_drag.jpg'>
<img  class="drop" src="images_drop.jpg">


Первый раз все отлично меняется, но после реплейса драг-объект становится неподвижным.

e1f 01.06.2009 13:53

Может, подойдет jquery.sortable?

spec2000 01.06.2009 14:32

да спасибо. наверно это то что мне нужно было.
Но щас я в некотором замешательстве.. Вопрос такой. Запустилась страничка. document.ready Отработал. Свойства элементам прописал.. а дальше я создаю новый элемент с уже существующим классом, но при этом jquery его уже больше не видет. Что делать? Как переинициализровать документ? или чо-то в этом роде чтобы jquery его подхватил?

e1f 01.06.2009 14:48

Ну либо jquery live(), либо перенавешивать все бинды. Но зачем удалять элемент, а потом создавать заново? перемещайте уже существующий. А если создаете действительно новый, на лету -- тогда же и навешиваете бинды. Как вариант, если создаете кучу однотипных элементов -- создайте заранее один шаблон, навестье на него обработчик, а потом просто клонируйте куда надо

x-yuri 01.06.2009 14:49

[telepat mode]live[/telepat mode] немного опоздал :)

e1f 01.06.2009 15:04

почему же телепат мод? вроде понятно :)

x-yuri 01.06.2009 15:19

потому что "Свойства элементам прописал", а про события ничего не сказано, про события обычно говорят "назначил пару обработчиков"
p.s. а вообще это единственная трактовка поста, которую я придумал, а раз уж 2 человека, независимо друг от друга ... :)

e1f 01.06.2009 15:45

:) Возможно, просто telepat_mode.defaults.on === true? ;)

spec2000 02.06.2009 11:12

да да да да я так и сделал буквально сразу как понял что объекты удалять не надо. Ну в общем все равно я jquery оставил в покое...
на версию 1.3.2 IE8 выдает ошибку и ничо не работает.
Ненавижу яваскрипт!!!!!!!

Gvozd 02.06.2009 11:34

Цитата:

Сообщение от spec2000
Ненавижу яваскрипт!!!!!!!

тем больше ценимся мы, кого не остановили такие трудности


Часовой пояс GMT +3, время: 18:49.