なぜこれが2回行われるのかわかりませんappend()
。
これはコールバック関数であり、ドラッグが発生した後に実行する必要があることに対応しています。(UI)
ドラッグされた div と、表示したい対応するテキストを識別するために、一連の処理が行われます (これは一種の「答えを選択し、適切なケースでドラッグ & ドロップするようなものです)。ドロップ シーケンスで:
.droppable({
drop: function(event, ui){ //this full code below..
既存の div (display:none) の html を取得し、表示したばかりの div に追加したいと考えています。このようにして、適切なコンテンツを回答 div に挿入します。しかし、この append() は仕事を 2 回 (?) 実行し、テキストを 2 回取得します。
set_drag = function(){
//on retire les clones inutiles
jQuery('.cible').not('#cas1bcible, #cas2bcible, #cas3bcible, #cas4bcible').remove();
// on garde l'img pour garder les dim du div
jQuery('.cible > img').fadeTo(0, 0);
jQuery('.cible').droppable({
// tout ce qui se passe si on drop
drop: function(event, ui){
//on récupère l'id de la forme droppée
var forme_drag = jQuery(ui.draggable);
var drag_id = jQuery(forme_drag).attr('id');
//extraction du code réponse - 2 dernier caract de l'id
var rep_num = '#rep' + drag_id.slice(-2);
var forme_ok = jQuery(ui.draggable).attr('class');
//Il faut afficher le texte d'accompagnement qqsoit la réponse
//Logo et titre
var n_texte = (drag_id).slice(-2).slice(0, -1);
var titre_rep = '<div id="titre-rep"> <img src="images/pt-logo-pnr.gif" alt="logo pnr" /><h3>Le PNR vous conseille</h3><h4>Cas ' + n_texte + '</h4></div>'
var textID = '#txt' + n_texte;
var le_texte = jQuery(textID).html();
jQuery('.continuer').show();
//on gère si ok ou pas
if (jQuery(forme_drag).hasClass('ok')) {
//Gestion du BON
//affiche le coucou un peu + heut que la zone de drop
//jQuery('#bravo').css('top', '10px').show(300);
// affiche la réponse prévue
jQuery('#reponses, #back-reponses').slideDown(300, function(){
//jQuery(rep_num).show().fadeTo('slow', 1, 'linear');
jQuery(rep_num).append(le_texte);
jQuery(rep_num).addClass('rep_ok').show().css('opacity', 1);
});
// insertion de la titraille
jQuery('#reponses').append(titre_rep);
// on rend draggable la réponse ...si on veut la bouger
jQuery('.reponse').draggable({
refreshPositions: true,
containment: 'parent',
opacity: 0.65,
snap: false,
cursor: 'move',
});
}
else {
//gestion du FAUX
// on identifie chaque réponses fausse pour faire disparaitre la forme ensuite
jQuery(forme_drag).addClass('faux');
// jQuery('#faux').css('top', '10px').show(300);
// affiche la réponse prévue
jQuery('#reponses, #back-reponses').slideDown(300, function(){
//jQuery(rep_num).show().fadeTo('slow', 1, 'linear');
jQuery(rep_num).append(le_texte);
jQuery(rep_num).addClass('rep_faux').show().css('opacity', 1);
});
jQuery('#reponses').append(titre_rep);
jQuery('.reponse').draggable({
refreshPositions: true,
containment: 'parent',
opacity: 0.65,
snap: false,
cursor: 'move',
});
}
}
});