JavaScript: остановить выделение перетаскиваемого элемента - PullRequest
2 голосов
/ 24 ноября 2010

Привет, я просто возился с jsFiddle и пытался сделать простое перетаскивание.Я не удосужился получить смещение и т. Д., Поэтому, как только вы щелкнете по нему, вы сосредоточитесь вокруг мыши.При наведении мыши я возвращаю false, который, как я думал, остановит появление элементов типа «призрак».Это не так.Я фокусируюсь на теле мышкой вниз на случай, если это так, но это тоже не помогло.

Итак, в основном мой вопрос: как я могу остановить выбор элементов?Вы можете найти скрипку здесь: http://jsfiddle.net/Wolfy87/HY2u4/

Любая помощь будет высоко ценится.Спасибо.

РЕДАКТИРОВАТЬ: Я только что проверил его в сафари, и это нормально, пока это только кажется Firefox.

Ответы [ 2 ]

3 голосов
/ 24 ноября 2010
jQuery.fn.extend({ 
  disableSelection : function() { 
    this.each(function() { 
      this.onselectstart = function() { return false; }; 
      this.unselectable = "on"; 
      jQuery(this).css('-moz-user-select', 'none'); 
    }); 
  } 
}); 

//How to use:
$('div.draggable').disableSelection();

Soulution без JQuery:

function disableSelection(target){ 
  if (typeof target.onselectstart!="undefined") //IE route 
    target.onselectstart=function(){return false} 
  else if (typeof target.style.MozUserSelect!="undefined") //Firefox route 
    target.style.MozUserSelect="none" 
  else //All other route (ie: Opera) 
    target.onmousedown=function(){return false} 
    target.style.cursor = "default" 
} 

найдено на:
Есть ли способ сделать текст невыбираемым на странице HTML?

1 голос
/ 24 ноября 2010

Исправлено. Оказывается, мне нужно установить функции onmousedown и onselectstart. Я предполагаю, что это то же самое, что и размещение onmousedown='...' в теге. Во всяком случае, это сейчас исправлено. Просто перейдите на страницу скрипки.

Это в основном код, который это исправил.

$('div.draggable').attribute().onselectstart = function () {
    return false;
}

$('div.draggable').attribute().onmousedown = function () {
    return false;
}

Останавливает действие по умолчанию для выбора элемента как текста в Firefox и IE.

...