У меня есть один div, где я выпадаю и добавляю текстовое поле, которое работает отлично, но проблема в том, что у меня есть еще один div внутри этого div (например, раздел), где мне нужно отбросить и добавить такое же текстовое поле, но теперь оно отбрасывается дважды, один для внутреннего div и другие для внешнего div, но я хочу только внутренний div. Я пытался в Google, но не мог найти много помощи. Поэтому будет очень полезно, если у кого-то есть идея по этому поводу. Спасибо.
вот код, но не полный, поскольку он очень сложный
$(function () {
var $Drag_tbox = $("#Drag_tbox"),
$drop_box = $("#tabs-1"),
$drop_box_sec = $("#secdiv");
$Drag_tbox.draggable(
{
zIndex: 9003,
revert: "invalid",
helper: "clone",
drag: function (event, ui) {
num = 1;
return num;
}
});
$drop_box_sec.droppable({
zIndex: 9003,
drop: function (event, ui) {
if (num == 1) {
$drop_box_sec.append('<tr><td align="center"><asp:Label runat="server" Text="Label"></asp:Label><input id="Text1" type="text" /></tr></td>');
}
}
});
$drop_box.droppable({
zIndex: 9003,
drop: function (event, ui) {
if (num == 1) {
$drop_box.append('<tr><td align="center"><asp:Label runat="server" Text="Label"></asp:Label><input id="Text1" type="text" /></tr></td>');
}
}
});
});
Ну, вы можете отвязать событие для внешнего окна, когда событие для внутреннего блока запущено, а затем привязать его снова, когда это будет сделано. Если вы используете jQuery, вы можете использовать off() или unbind(). Пожалуйста, разместите свой код, чтобы я мог сослаться на это.
После просмотра кода: http://jsfiddle.net/Dw66V/3/
Я добавил перетаскиваемый div. Что происходит сейчас, когда что-то падает на внутренний элемент, внешний элемент droppable отключается, после чего он снова включается после короткого таймаута.
$drop_box_sec.droppable({
drop: function (event, ui) {
$drop_box.droppable('option', 'disabled', true);
// Your code here
setTimeout(function () {
$drop_box.droppable('option', 'disabled', false);
}, 500);
}
});
ЛУЧШИЙ СПОСОБ ДЕЛАТЬ ЭТОГО :) (через Jquery drop callback метода droppable, который вызывается дважды)
Просто добавьте параметр "жадный" во внутренний div, например:
$drop_box_sec.droppable({
greedy: true,
drop: function (event, ui) {
// Your code here
}
});
это прекрасно работает из коробки. http://jsfiddle.net/Dw66V/4/