2010-12-06 9 views
8

J'ai essayé d'utiliser ondrag() et d'autres fonctions sur un div rendu dynamiquement sur une page HTML.Javascript ondrag, ondragstart, ondragend

Aucun de ces événements ne semble se déclencher et je n'ai aucune erreur. Je ne trouve pas non plus beaucoup de documentation utile à ce sujet. Suis-je l'interpréter à tort, pouvez-vous utiliser ces événements pour écrire des fonctionnalités pour faire glisser un div autour de l'écran?

+0

utilisez-vous des frameworks/plugins javascript? Si pas autre que IE et Safari d'autres navigateurs ne comprennent pas ondrag. pouvez-vous coller votre code? – Prashanth

+0

Borwser? doctype? Peux-tu donner d'autres détails? – Eineki

+1

Bon article: http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html –

Répondre

10

Jetez un oeil à cette documentation: https://developer.mozilla.org/En/DragDrop/Drag_and_Drop

Note: Il ne fonctionne pas dans tous les navigateurs.

Si vous voulez une utilisation de support multi-navigateur JQuery: http://jqueryui.com/demos/draggable/

exemple jQuery:

<div id="draggable" class="ui-widget-content"> 
    <p>Drag me around</p> 
</div> 

<script> 
    $(function() { 
     $("#draggable").draggable({ 
      drag: function(event, ui) {} 
     }); 
    }); 
</script> 

Un autre exemple:

<div id="toBeDragged" draggable="true"> 
    This text <strong>may</strong> be dragged. 
</div> 

<script> 
document.getElementById('toBeDragged').addEventListener('dragstart', function(event) { 
    event.dataTransfer.setData('text/plain', 'This text may be dragged'); 
}); 
</script> 
+11

Je n'utilise pas JQuery désolé –

+0

@Tom Gullen: qu'en est-il de l'autre exemple? – Tower

+1

Si vous voulez une solution de glissement cross-browser robuste, je recommanderais d'utiliser l'une des nombreuses options disponibles construites sur un framework JS existant. –

1

Je n'ai pas utilisé moi-même de traînée, mais je crois que c'est le glisser "edit action" - par exemple, sélectionner du texte et le faire glisser dans une zone de texte/textarea.

Vous devrez peut-être mettre en œuvre vos propres onmousedown()onmouseup() et onmousemove() gestionnaires pour la fonctionnalité, je pense que vous êtes après

0

Un moyen facile de le faire est avec jQuery UI, assurez-vous d'utiliser après votre div dynamique a été rendu.

$(document).ready(function() { 
    $('.my_draggable_elements').draggable({ 
     drag: function(){ 
      // do something 
     } 
    }); 
}); 
0

Y a-t-il du contenu dans la div? Je ne pense pas que ce soit l'élément lui-même qui soit traîné dans cet événement particulier.