У меня есть редактируемая таблица, в которой вы можете динамически добавлять строки с помощью кнопки, но я не могу удалить свои перетаскиваемые вещи в новые строки, даже если у них есть droppable-Selektor. Я попытался исправить его делегатом и droppable()
для новых строк, но не смог. Любые советы или идеи?
Here is my Code:
http://jsfiddle.net/gM3bF/7/
Вы должны добавить .droppable(options)
в свою новую строку.
Чтобы заставить его работать, я добавил класс для новой строки:
var newtr = $('<tr />', { class: 'sortable-row ui-droppable newRow' });
А теперь добавьте droppable в этот newRow (и, наконец, удалите этот новый бесполезный класс):
$(".newRow") .droppable( {
revert: true,
drop: function (event, ui) {
var id = ui.draggable.prop('id');
if (id == "blurk") { var content = blurkContent(); };
var title = $(event.target).closest('tr').children()[2];
$(title).html(unescape(content[0]));
var description = $(event.target).closest('tr').children()[3];
$(description).html(unescape(content[1]));
var link = $(event.target).closest('tr').children()[4];
$(link).html(content[2]);
var thumbnail = $(event.target).closest('tr').children()[5];
$(thumbnail).html(content[3]);
}
} )
$(".newRow").removeClass("newRow");
Конечно, вы можете упростить параметр, который вы добавляете, создавая новый var для этого.
Надеюсь, поможет
использовать:
$(document).on(eventName, selector, function);
Применение:
$(document).on('click', 'input.addButton', function(){ alert('clicked'); });
$(document).on('dblclick', '#editableTable td', function(){ alert('td clicked'); });
$(document).on('click', '#editableTable input.deleteButton', function(){ alert('delete clicked'); });
их можно объявить один раз в обработчике событий документа.
Однако,
если у вас есть динамически добавленные перетаскиваемые элементы, обязательно вызовите .draggable({})
после их добавления в DOM.
надеюсь, это поможет.