С jQuery и DOM, если вы заменяете элемент DOM на точно такой же элемент DOM с точно таким же идентификатором DOM (таким образом, div с идентификатором "div1" заменяется другим div с идентификатором "div1"), тогда связанный jQuery данные с этим элементом DOM теряются. Указатель jQuery фактически указывает на элемент-призрак, которого больше нет на странице.
Чтобы увидеть доказательство, запустите firebug в Firefox и просто зайдите
$("#layoutHeader")
до и после вашего сообщения AJAX. Нажмите на элемент, возвращенный в консоли, оба раза. Вы заметите, что при втором щелчке (то есть после возврата POST) ваш firebug будет указывать на серый элемент-призрак.
Решение состоит в том, чтобы немного изменить свой код. Попробуйте это
function handler(event,ui){
$.ajax({
type: "POST",
url: '/SiteSetup/GetMarkup/' + $(ui.draggable).attr("id"),
success: function (data) {
$('.draggable').draggable('destroy');
$('#layoutHeader').replaceWith(data);
$('.draggable').draggable({ revert: true });
}
$('#layoutHeader').droppable({drop: handler});
}
$(function () {
$('.draggable').draggable({ revert: true });
$('#layoutHeader').droppable({drop: handler});
});