Начать перетаскивание с помощью другого элемента
Можно ли запустить перетаскивание с помощью другого элемента?
Например: http://jsbin.com/igohod/edit#preview
Я хочу начать перетаскивание #ct
, когда я нажимаю на #icon
. Примечательно, что #icon
не происходит от #ct
в дереве DOM.
HTML
<div style="position:absolute; top:20px; left:10px;">
<div id="icon">Icon</div>
</div>
<div style="position:absolute; top:20px; right:10px;">
<div id="ct">start this drag when you drag the icon</div>
</div>
JS
$(document).ready(function()
{
// $('#icon').draggable();
$('#ct').draggable();
});
ОБНОВЛЕНИЕ:
Новый пример с сортировкой
http://jsbin.com/igohod/8/edit#preview
Решение
http://jsbin.com/igohod/13/edit#preview
Ответы
Ответ 1
Это работает, но всегда добавляет его в конец списка:
$(document).ready(function() {
$('#icon').mousedown(function(e) {
$('#ct').trigger(e);
});
$('#dropHere').sortable({ placeholder: 'ui-state-highlight' });
$('#ct').draggable({ connectToSortable: '#dropHere' });
Я также добавил стиль CSS и сбросил вложенные теги div:
#dropHere div{width:10; height:10; padding:10px; border:1px solid #000;}
http://jsbin.com/igohod/9/
Ответ 2
Вот возможное решение:
$('#icon').draggable({drag: function(event, ui) {
$("#ct").parent().css("top", 20 + parseInt($(this).css("top")));
$("#ct").parent().css("left", 200 + parseInt($(this).css("left")));
}});
Просто обновляйте левое и верхнее значения #ct, когда вы перемещаете значок вокруг.
Ответ 3
Еще одно возможное решение с использованием помощника для инкапсуляции объекта перетаскивания. Таким образом, вам не нужно ловить какие-либо события мыши или устанавливать произвольные позиции. jQuery обрабатывает это для вас.
$(document).ready(function()
{
$('#dropHere').sortable({
placeholder: 'ui-state-highlight',
receive: function(event, ui) {
$(this).find('.drophandle').replaceWith(ui.helper);
$(ui.helper).attr('style','');
}
});
$('#icon').addClass('drophandle').draggable({
connectToSortable: '#dropHere',
cursorAt: { top: 15, left: 225 },
helper: function() { return $('#ct')[0]; }
});
});
http://jsbin.com/igohod/25