Я пытаюсь составить список элементов, которые можно перетаскивать (и под) перетаскивать.
Мне удалось перетащить элемент в его родительский элемент, а дочерний элемент - в его только что перемещенный элемент.
Но тогда я не могу "получить доступ" к ребенку. Например, двойной щелчок по элементу li должен открыть окно с именем этого элемента. Чего я не могу, событие всегда запускает родитель.
Я пытался поиграть с zIndex, но это не помогло.
Смотрите мою скрипку, это будет более явным. http://jsfiddle.net/WeeHT/
Благодарю вас!
function make_draggable() {
$('.account_line').draggable({
containment: '#COA_Table',
cursor: 'move',
snap: '#COA_Table',
helper: 'clone'
})
}
function make_droppable() {
$('.account_line').droppable({
accept: '.account_line',
tolerance: 'pointer',
hoverClass: "account_line_drop-hover",
zIndex: zindexlevel++,
drop: function (e, ui) {
// if this is first child we append a new ul
if ($(this).children('ul').length == 0) {
$(this).append('<ul></ul>')
}
$(this).children('ul').append(ui.draggable)
$(this).css({
backgroundColor: 'white'
})
$(this).css({
zIndex: zindexlevel++
})
},
over: function () {
$(this).css({
backgroundColor: "grey"
});
},
out: function () {
$(this).css({
backgroundColor: 'white'
})
}
})
}
1 ответ
Это потому, что событие поднимается до дерева DOM.
Поэтому вам нужно добавить следующую строку в начало обработчика события двойного щелчка:
e.stopPropagation();
Тогда в вашем коде это будет выглядеть так:
function start_edit() {
$('.account_line').dblclick(function (e) {
e.stopPropagation();
var account_name = $(this).children('p').first().html()
$('#account_edit').css({
display: 'block'
});
$('#account_edit').children('#account_name_to_edit').html(account_name);
})
}
Описание: предотвращает всплытие события в дереве DOM, предотвращая получение уведомления о событии родительскими обработчиками.
Похожие вопросы
Новые вопросы
jquery
jQuery — это библиотека JavaScript. Также рассмотрите возможность добавления тега JavaScript. jQuery — это популярная кросс-браузерная библиотека JavaScript, которая упрощает обход объектной модели документа (DOM), обработку событий, анимацию и взаимодействие AJAX, сводя к минимуму расхождения между браузерами. Вопрос с тегом jQuery должен быть связан с jQuery, поэтому jQuery должен использоваться рассматриваемым кодом, и в вопросе должны быть как минимум элементы, связанные с использованием jQuery.