7
votes

Faire de nouvelles div feuillet dans jQuery

J'essaie de faire de JQuery Ajouter à nouveau Div puis de la rendre dragagable mais j'essaie et je cherche Google et je ne trouve rien ici est mon code ci-dessous

 $(document).ready(function() {

 $("#draggable").draggable({ 
   containment: 'parent',
   handle: 'drag_border',
   drag: function(e, ui) {
          var top = ui.position.top;
          var left = ui.position.left;
          $("#top").html(top);
          $("#left").html(left);
           }
       }); 
   });

       function New_Text() {   
            $("<div id=\"draggable\" style=\"width: 200px; height: 50px; border:dashed thin; background-color: #fff\">Drag me</div>").appendTo("div#drag_border"); 
              }


4 commentaires

Ceci est juste un extrait, pourriez-vous publier davantage du code afin qu'il soit plus facile de déboguer?


Pouvez-vous faire la DIV lorsque la page est chargée et l'avoir caché jusqu'à ce qu'il soit nécessaire?


@ Alexy13 - Je crois que le problème est qu'il crée la div une plus tard, le gestionnaire d'événements n'est donc pas attaché à la Div, et je ne pense pas que la fonction live fonctionnera pour cela, mais c'est presque ce dont il a besoin.


Ce que je voulais dire, c'est de poster une partie du HTML afin que je puisse trouver le problème plus facile. Parfois, je ne suis pas très bon pour expliquer: p


4 Réponses :


0
votes

Je ne l'ai pas essayé, mais cela devrait fonctionner:

function New_Text() {   
  $("<div id=\"draggable\" style=\"width: 200px; height: 50px; border:dashed thin; background-color: #fff\">Drag me</div>").appendTo("div#drag_border"); 
        setTimeout(function() {
           ...
          });

         }, 10);
   }


0 commentaires

3
votes

Le problème ici est que vous créez la DIV après avoir essayé de le faire glisser.

Les événements de JQuery ne fonctionnent que sur les éléments qui existent à l'époque duquel le JavaScript est exécuté - il existe des moyens autour de celui-ci à l'aide du et délégué fonctions - mais cela ne fait pas 'T ressemble à votre plugin permet de cela.

Donc, si ce code doit rester identique, déplacez le bit qui crée la DIV au-dessus de la fonction draggable - et cela fonctionnera.


0 commentaires

11
votes

Si vous utilisez jQuery UI , puis créez votre élément et faites-la glacer:

$("<div />").draggable();


0 commentaires

0
votes

Étant donné que certaines personnes ont mentionné la fonction draggable () code> ici, qui est une fonction d'interface utilisateur JQuery, voici un court-circuité:

Ajoutez la ligne suivante (référence à JQuery UI) à votre page .html, à l'intérieur de la tête ou au bas du corps: p> xxx pré>

maintenant, pour rendre #Draked dragge vous écrivez dans votre script (votre script ou la référence Pour cela, il faut venir après la référence à JQuery UI): P>

$('#draggable').draggable()


0 commentaires