JavaScript:停止选择可拖动元素

时间:2010-11-24 13:39:04

标签: javascript drag-and-drop focus draggable

嘿那里,我只是在jsFiddle搞乱,并试图做一个简单的拖放。我没有费心去获得偏移等,所以一旦你点击它就会以你的鼠标为中心。在鼠标按下时我返回false,我认为这会阻止元素出现'鬼'。它没。我专注于鼠标上的身体以防万一,但它也没有帮助。

所以基本上我的问题是,如何阻止元素被选中?你可以在这里找到小提琴:http://jsfiddle.net/Wolfy87/HY2u4/

非常感谢任何帮助。感谢。

编辑:我刚刚在safari中测试过它很好,到目前为止它似乎只是firefox。

2 个答案:

答案 0 :(得分:3)

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();

没有jQuery的Soulution:

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" 
} 

发现:
Is there a way to make text unselectable on an HTML page?

答案 1 :(得分:1)

修正了它。事实证明,我必须设置onmousedown和onselectstart函数。我假设这与在标记中放置onmousedown='...'相同。无论如何,现在已经修好了。只是去小提琴页面。

这基本上是修复它的代码。

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

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

它会停止在Firefox和IE中选择元素作为文本的默认操作。