转:js拖拽事件取消选中功能


方法一:阻止事件的默认动作
在mouseDown与mouseMove里,要阻止事件的默认动作,ie返回false,其它preventDefault();
如:
$("#aa").mousedown(function(event){
//要做的事;
event.preventDefault();
return false;
});

$("#aa").mousemove(function(event){
//要做的事;
event.preventDefault();
return false;
});

方法二:属性样式定义
定义html元素的unselect属性,ie的unselectable,FF的CSS属性MozUserSelect,其它如 KhtmlUserSelect。由于ie下unselectable不继承,一种方法是,给该元素定义selectstart使其返回false;别一种就是给其子元素都定义 unselectable=on。 由于没有了选取点,自然不会选中。
this.element.attr('unselectable', 'on').css({ 'MozUserSelect': 'none', "KhtmlUserSelect": "none"}).bind('selectstart', function(){ return false; });

方法三:事件捕获
IE :dom.setCapture()与dom.releaseCapture();
菲IE:window.captureEvents(Event.MOUSEMOVE)与window.releaseEvents(Event.MOUSEMOVE);
如:
$(dom).mousedown(function(e){
//一些操作,如定义mousemove与mouseup
var self=this;

$(document).mousemove(function(e){
//干活

//取消选中
e.preventDefault();
return false;
});
$(document).mouseup(function(e){
//取消事件
$(document).unbind("mousemove").unbind("mouseup");
if($.browser.msie()){
self.releaseCapture();
}else{
window.releaseEvents(Event.MOUSEMOVE);
}

});
if($.browser.msie()){
this.setCapture();
}else{
window.captureEvents(Event.MOUSEMOVE)
}

});

Archives