jQuery UI déplaçable n'est pas de travail nouvellement créé élément du DOM
J'ai quelques élément du DOM qui est déplaçable à l'aide de jQuery UI.Tous travaillent bien, mais lorsque je crée un élément à l'aide de jQuery , alors qu'ils ne sont pas déplaçables à tous. j'.e
$('div.draggable').draggable(); //Existing element , it works :)
$('p.draggable').draggable() ; //Newly created paragraph with same class name, it doesnt work at all :(
Merci d'avance !!!
J'essaye Ceci :
<script type="text/javascript">
$(document).ready(function(){
$('body').append('<p class="draggable">Newly Created Paragraph</p>');
$('p.draggable').draggable(); **//This is not working**
});
</script>
Toutefois Quelque part c'est un travail
<script type="text/javascript">
$(document).ready(function(){
$('body').append('<p class="draggable">Newly Created Paragraph</p>')
.find('p.draggable').draggable(); **This is working**
});
</script>
- essayez de mettre l'alerte avant et après
$('p.draggable').draggable();
puis de voir celui qui arrive en premier. Aussi n'est-ce pas$('body')
?
Vous devez vous connecter pour publier un commentaire.
Je sais que sa fait un moment, mais ce problème récemment m'énerve trop. Comme quelqu'un d'autre a mentionné, vous devez réexécuter
.draggable()
sur le nouvellement créé, mais qui ne fonctionne pas si vous avez défini un certain nombre d'options dans votre.draggable()
. Aussi ce qui ne fonctionne pas est de mettre le$().draggable()
dans une fonction et l'appel de la fonction après la création d'un nouvel élément (cette astuce ne fait toutefois travailler avec de réinitialiser les droppables - allez comprendre).De toute façon, c'est une longue histoire courte -> Mettre de la
$().draggable()
installation dans une fonction et l'appel de la fonction après la création d'un nouvel élément N'a fonctionné, mais j'ai eu à le SORTIR de ladocument ready
fonction..... après j'ai désactivé cette, il a travaillé.Vous pouvez appeler cette fonction autant de fois et il continue à travailler après chaque créé élément. Il semble que si c'est dans le
document.ready
énoncé de ses 1 fois..Espère que ça aide.
Vous devez appeler draggable() après le nouvellement créé élément est inséré dans le DOM.
La raison d'être, c'est que la première ligne de code est seulement l'appariement des éléments existants. Nouvellement créé éléments ne sont pas sélectionnées en première ligne.
$(document).ready()
ainsi que aussi essayé d'écrire le<script></script>
à la fin du document ie. juste avant</body>
balise ainsi, mais il ne marche pas 🙁En fait il semble qu'il y ait de problème avec déplaçable. Lors de l'ajout de certains htmlTag et ensuite essayer de le trouver et de le rendre déplaçable, il ne le reconnaissent pas. essayez de faire un nouvel élément à l'aide de
createElement
et ensuite ajouter. Espérons que cela fonctionneou
$('p.draggable')
sélectionne tous les " p "éléments avec la classe "déplaçable" etdraggable()
, une fois appliquée à un élément ne s'applique pas encore, plutôt précédemment appliquée déplaçable aussi est corrompu. Essayez.draggable().draggable()
sur n'importe quel élément et ensuite vous pouvez voir. Toutefois, si vous appliquez déplaçable avant d'ajouter lui-même puis d'en ajouter, il appliquera draggable() pour ce seul élément et que trop à la fois.j'ai eu ce problème, mais après avoir lu cela, je pouvais le résoudre. donc, vous devez appeler à nouveau draggable() la méthode après la construction de votre nouvel élément, c'est mon code:
Vous devriez appeler draggable() de la fonction à chaque fois que vous appelez une action d'événement:
Vous devez appliquer déplaçable sur l'instance de l'objet nouvellement créé,
Réécrit le code:
Il devrait maintenant fonctionner.
Vous pouvez utiliser setTimeout pour appeler déplaçable en fonction après le nouvel élément a fait.
setTimeout
pour cela? Les autres solutions, qui sont beaucoup plus anciens, le travail sans qu'il