2010-11-24 47 views
2

Hé là, je faisais juste des bêtises dans jsFiddle et j'ai essayé de faire un simple glisser-déposer. Je n'ai pas pris la peine d'obtenir le décalage, donc dès que vous cliquez sur le centre autour de votre souris. En descendant la souris, je rentre faux, ce qui, je pense, empêchera l'apparition des «fantômes». Il n'a pas. Je me concentre sur le corps de la souris au cas où ce serait le cas, mais ça n'a pas aidé non plus.JavaScript: Arrêtez la sélection d'un élément déplaçable

Donc, fondamentalement, ma question est: comment puis-je arrêter la sélection d'éléments? Vous pouvez trouver le violon ici: http://jsfiddle.net/Wolfy87/HY2u4/

Toute aide serait grandement appréciée. Merci.

EDIT: Je viens de le tester en safari et c'est bien, jusqu'à présent, il semble seulement être firefox.

Répondre

1

L'a corrigé. Il s'avère que je dois définir les fonctions onmousedown et onselectstart. Je suppose que c'est la même chose que de placer onmousedown='...' dans l'étiquette. De toute façon, c'est réparé maintenant. Il suffit d'aller à la page de violon.

Il s'agit essentiellement du code qui l'a corrigé.

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

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

Il arrête l'action par défaut de sélectionner l'élément comme texte dans Firefox et IE.

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

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

trouvé sur:
Is there a way to make text unselectable on an HTML page?

+0

Désolé, mais je ne suis pas en utilisant jQuery. C'est ma propre bibliothèque. Mais bon concept, le coller dans un plugin. – Olical

+0

J'ai posté une soulution sans jQuery – Floyd

+0

Merci pour cela, +1. Je pense que je m'en tiendrai au mien parce que je le comprends mieux. Et il en a un pour IE, un pour le reste. Plutôt que IE, Firefox et le reste. – Olical