11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous, j'ai un petit souci avec la fonction .on(), actuellement j'ai ça qui fonctionne :
$( ".elementDrop" ).droppable(droppableOptions);

droppableOptions correspondant à un traitement spécifique du drop :

var droppableOptions={ 
    drop: function( event, ui ) {
        ...
     }
} 


Le problème se trouve ici :
Je n'arrive pas à trouver la bonne forme/syntaxe/sémantique afin d'avoir un truc dans ce goût :
$('body').on('droppable','.elementDrop','droppableOptions');

Merci d'avance ! Smiley smile
Modifié par Luluberlu (11 May 2017 - 11:55)
Modérateur
Bonjour,

Je ne pense pas que tu puisse utiliser .on() dans ce cas là.

.droppable() est une fonction que JqueryUI avec des options qui va donner un comportement à un élément.
.on() est un Event listner donc il va juste "écouter" au cas ou l'évent recherché à lieu et déclencher une fonction, mais .droppable n'est pas un event du tout...

Donc au dela de ne pas pouvoir passer d'arguments, ce que tu tente de faire est un non sens...

Pourquoi veux-tu passer à .on() ?
Je veux passer à .on() car mon Drag and Drop fonctionne sur les éléments présents au chargement de la page mais pas sur ceux ajoutés dynamiquement...
Bonjour,
Le type d'événement est "drop", et pour le listener il faut une fonction, comme ceci :
$('body').on('drop','.elementDrop',function(ev,ui){console.log(ev,ui)});
Modérateur
Luluberlu a écrit :
mon Drag and Drop fonctionne sur les éléments présents au chargement de la page mais pas sur ceux ajoutés dynamiquement...

Et bah il faut ajouter le .droppable() dynamiquement au moment ou tu crées l'élément.

Le on() ne sert qu'a observer un événement, tu auras beau observer le drop d'un élément, si il est pas droppable tu vas attendre longtemps Smiley lol
Meilleure solution
ET l'évènement drop ne fonctionne pas tout seul, i.e. réagir à l'évènement drop n'est pas suffisant. C'est sûrement pour cette raison que JQuery a créé une fonction spécifique d'ailleurs.
Pour que le drag&drop HTML5 fonctionne, il y a plusieurs évènements qui doivent entrer en jeu.