-1

我不明白为什么这样append() 做两次。

这是一个回调函数,对应于拖动发生后必须做的事情。(用户界面)

做了一堆处理来识别拖拽的 div 和一些我们想要显示的对应文本(这是一种“选择一个答案并在正确的情况下拖放它)。在放置顺序中:

.droppable({
    drop: function(event, ui){ //this full code below..

我得到了一个已经存在的 div (display:none) 的 html,并想将它添加到我们刚刚显示的 div 中。这样我们就可以将好的内容注入到答案 div 中。但是这个 append() 完成了两次工作(?),我得到了两次文本。

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">&nbsp;&nbsp;<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',

                });

            }

        }
    });
4

1 回答 1

0

I made it working as intended moving the append() instruction outside the if/else statement.

(???)

In my case it's ok because the txt to be appended is finally not depending on this test, and could be done right after it too, but it remains weird.

于 2011-10-25T10:04:02.570 回答