Jquery Sortable Update Event может вызываться только один раз? - PullRequest
5 голосов
/ 23 июня 2010

Я пытаюсь внести изменения в категории с помощью Jquery & Php.У меня нет проблем с этим.Моя проблема в том, что когда вызывается событие обновления, оно возвращает 2 результата.1 результат для Перетащенного Родителя, один результат для Отброшенного Родителя.Я хочу позвонить только упал идентификатор родителя.Вот мой сценарий:

$("#gallery ul").sortable({
    connectWith: '.dropBox',
    opacity: 0.35,
    scroll: true, 
    scrollSensitivity: 100,
    //handle: '.move',
    helper: 'clone',
    containment:'#gallery',
    accept:'#gallery > .photo',
    revert: true,
    update: function(event, ui){
        params = 'c=' + $(this).attr('id') + '&id=' + ui.item.attr('id');

        $.ajax({
            type: 'POST',
            url: 'processData.php',
            data: params,
            error:function(){
                alert("Error!");
            },
            success:function(data){
                $("#serverResponse").html(data);
            }
        });
    }
}).disableSelection();

Можете ли вы помочь мне, ребята?

Ответы [ 4 ]

7 голосов
/ 17 января 2012

Используйте update, stop и receive события, например

$(function() {
    position_updated = false; //flag bit

    $(".sortable").sortable({
        connectWith: ".sortable",

        update: function(event, ui) {
            position_updated = !ui.sender; //if no sender, set sortWithin flag to true
        },

        stop: function(event, ui) {
            if (position_updated) {

                //code

                position_updated = false;
            }
        },

        receive: function(event, ui) {
            // code
        }

    }).disableSelection();
});
3 голосов
/ 07 сентября 2011

ui.sender существует только во втором обратном вызове.

$(".sortable").sortable({
    connectWith: ".sortable",
    update: function (evt, ui) {
        // just ignore the second callback
        if(ui.sender == null){
            // call ajax here
        }
    },
    receive: function (evt, ui) {
        // called after the first 'update'
        // and before the second 'update'
        // ui.sender is always exists here
    }
}).disableSelection();
1 голос
/ 03 сентября 2010

Вы должны попробовать сыграть с sortable различными событиями

  • начать
  • 1007 * рода *
  • изменение
  • beforeStop
  • остановка
  • обновление
  • получать
  • удалить
  • над
  • из
  • активировать
  • деактивировать

Я почти уверен, что один из них будет вашим ответом.

Источник: http://jqueryui.com/demos/sortable/#event-change

0 голосов
/ 20 сентября 2017

Просто сделайте это:

  update: function(event, ui) {
            if(ui.sender) {
             // Your actual code
            }
        },
...