Я создал div, который можно использовать с помощью jQuery. Однако в этом поле есть какой-то текст, и я все равно хотел бы копировать и вставлять текст, но когда я делаю элемент перетаскиваемым, когда я нажимаю на поле, он начинает перемещать поле?
Как вы можете выбрать текст в div-перетаскивании jQuery?
Ответ 1
Не имеет смысла разрешать перетаскивание и выбор текста на одном элементе. Однако, если вы продолжаете думать, что это необходимо, мне приходят две вещи:
Решение 1:
Вы можете добавить "обработчик", который будет единственным дочерним, получающим события мыши/вверх, чтобы перетащить div. Например:
<div id="draggable">
<div class="handler"></div>
<div class="text">This is a selectable text</div>
</div>
И в вашем JavaScript-коде:
var draggableDiv = $('#draggable');
draggableDiv.draggable({
handle: $('.text', draggableDiv)
});
Решение 2:
Вы можете отключить перетаскиваемую вещь, когда пользователь пытается выбрать текст:
<div id="draggable">
<div class="text">This is a text</div>
</div>
И в вашем JavaScript-коде:
var draggableDiv = $('#draggable').draggable();
$('.text', draggableDiv).mousedown(function(ev) {
draggableDiv.draggable('disable');
}).mouseup(function(ev) {
draggableDiv.draggable('enable');
});
Когда кто-то пытается выбрать что-то в .text
, перетаскиваемый процесс отключается.
Первое решение является правильным.
Ответ 2
Используйте параметр cancel
, когда элемент перетаскивается.
Предотвращает перетаскивание от запуска по указанным элементам.
$('.selector').draggable({ cancel: '.text' });