передать событие
function reverse(event, ui){ //alert("reverse"); $(".drag").draggable({ revert:true, stop: function( event, ui ) { $(".drag").draggable({revert:false}) } }); } $(function() { var id; var carType; var save_event; //пробовал сохранить :) var save_ui; $(".drag").draggable({ cursor: "move", drag: function(event, ui) { } }); $(".drop").droppable({ start: function(event, ui) { }, hoverClass: "red", drop: function( event, ui ) { save_event = event; save_ui = ui; id = ui.draggable.attr('id'); carType = $(this).attr("data-carType"); var list = $(this).find('img'); if(list.length > 0){ reverse(event, ui) } else { $(this).css("background","green"); $.ajax({ type: "POST", url: "${createLink(controller: 'ajaxActions', action: 'checkRoute')}/?carType=" + carType, success: function (response, event, ui) { //alert("response = "+response); if(response == "CONTINUE") { formRouteOpen (event); loadRoutes(carType, id) } if(response == "ONEROUTE") { $.ajax({ type: "POST", url: "${createLink(controller: 'ajaxActions', action: 'changeRoute')}/" + id + "?carType=" + carType, success: function (response) { if (response == "OK") { location.reload() } } }); } if(response == "NOROUTE") { //alert("NOROUTE"); reverse(event, ui) } } }); } } }); }); при первом вызове функции reverse она отрабатывает как надо if(list.length > 0){ reverse(event, ui) } а вот внутри ajax событие теряется, видимо. Можно ли туда как-то передать то событие. Фишка в чем: я перемещаю объект. и в пункте назначения делаю ajax запрос, в зависимости от него, у меня либо выполняется функция возврата объекта в исходное место, либо нет. а чтобы вернуть, нужно событие откуда начали перетаскивать. (может, конечно, что-то недопонимаю. реализую функцию drag&drop с реверсом) |
немного изменил функции. проблема теперь не в событиях(наверное), а в том, что ajax не успевает выполниться и проверка if(reverseStatus) проходит быстрее ajax-запроса. вопрос теперь в том, как сделать "задержку" на дальнейшее выполнение скрипта или что-то типа того?
function reverse(){ alert("reverse"); $(".drag").draggable({ revert:true, stop: function( ) { $(".drag").draggable({revert:false}) } }); } $(function() { var id; //id заявки var carType; //данные для отрисовки машины var save_event; var save_ui; var reverseStatus = false; $(".drag").draggable({ cursor: "move", drag: function(event, ui) { } }); $(".drop").droppable({ start: function(event, ui) { }, hoverClass: "red", //tolerance: 'fit', drop: function( event, ui ) { save_event = event; save_ui = ui; id = ui.draggable.attr('id'); carType = $(this).attr("data-carType"); var list = $(this).find('img'); if(list.length > 0){ reverse(); } else { $(this).css("background","green"); $.ajax({ type: "POST", url: "${createLink(controller: 'ajaxActions', action: 'checkRoute')}/?carType=" + carType, success: function (response) { //alert("response = "+response); if(response == "CONTINUE") { formRouteOpen (event); loadRoutes(carType, id) } if(response == "ONEROUTE") { $.ajax({ type: "POST", url: "${createLink(controller: 'ajaxActions', action: 'changeRoute')}/" + id + "?carType=" + carType, success: function (response) { if (response == "OK") { location.reload() } } }); } if(response == "NOROUTE") { alert("NOROUTE"); reverseStatus = true; } alert("reverseStatus1 = "+reverseStatus); } }); alert("reverseStatus3 = "+reverseStatus); if(reverseStatus) { alert("reverseStatus2 = "+reverseStatus); reverse(); } } } }); }); |
решение найдено: async: false,
|
Цитата:
ЗЫ Код Ваш разгребать сил нет, поэтому ничего конкретного сказать не могу, сорри:) |
Часовой пояс GMT +3, время: 23:52. |