jQuery .sortable + receive Event: получить позицию вставленного элемента - PullRequest
1 голос
/ 25 июня 2010

У меня есть сортируемый элемент jQuery и другой перетаскиваемый элемент. С помощью сортируемого события receive я получаю новый вставленный объект и запускаю ajax-запрос, чтобы записать его в базу данных. Но было бы неплохо также получить правильную позицию нового элемента. Когда я запускаю сортировку ("serialize") при получении события, новый элемент отсутствует в строке. как узнать положение вставленного элемента?


Draggable:

<div id="docP1" class="docPopC">';
    for($x = 10; $x<30; $x++){
        if($block_ele[$x])
            echo '<p id="b_'.$x.'" class="doc_inhalt_popup">'.$block_ele[$x].'</p>';
    }
echo '
</div>

Сортируемый:

<div id="aktiv"><input type="hidden" value="xx" /></div>

JQuery:

$("#aktiv").sortable({
connectWith: '#aktiv',
forcePlaceholderSize: true,
items: 'div.block',
receive: function(event, ui){
    var nblock = ui.item.attr("id").split("_");

    $.get('inc_dokumente.php', {
        index : 'n256',
        aktiv : $("#aktiv input:first").val(),
        id : rel,
        block: nblock[1]
    }, function(data){ 
        load_bloecke();
    });
},
update: function(event, ui){ 
    $.get('inc_dokumente.php', {
        index : 'n257',
        aktiv : $("#aktiv input:first").val(),
        id : rel,
        sort: $("#aktiv").sortable("serialize")
    }, function(data){
        if(data) alert(data);
        load_bloecke();
    });
}
});

$(".docPopC p").draggable({
    connectToSortable: '#aktiv',
    helper: 'clone',
    revert: 'invalid',
    zIndex: 9999999,
    appendTo: 'body'
});

1 Ответ

0 голосов
/ 28 июня 2010

Проблема в том, что эта опция при объявлении #aktiv сортируемой

items: 'div.block'

При этом вы говорите, что только дивы с блоком классов должны считаться сортируемыми внутри #aktiv, поэтому, когда вы делаете $("#aktiv").sortable("serialize"), jQuery не оценивает элемент, который вы в него поместили, поскольку это элемент p , Если дело обстоит так, то ваши недавно уроненные предметы также не будут сортироваться с другими элементами (div.block s), поэтому вы исправляете несколько проблем)

Возможные решения:

  • Заставить #aktiv считать элемент p сортируемым (items: 'div.block, p.doc_inhalt_popup)
  • Создайте элементы p, которые вы перетаскиваете в divs с классом block
  • (Вы можете пропустить предоставление перетаскиваемого блока класса в своем HTML и вместо этого добавить его с помощью jQuery, когда получите элемент)
...