Подтвердить что ты не робот

Как вы можете выбрать текст в div-перетаскивании jQuery?

Я создал div, который можно использовать с помощью jQuery. Однако в этом поле есть какой-то текст, и я все равно хотел бы копировать и вставлять текст, но когда я делаю элемент перетаскиваемым, когда я нажимаю на поле, он начинает перемещать поле?

4b9b3361

Ответ 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' });