2016-03-28 3 views
1

このスレッドで復帰のために回答を適用しましたが(Adding a function to jQuery draggable revert "event")、まだ問題があります。 間違ったドラップテーブルに置かれたときに、元の場所に戻すのではなく何らかの理由でマネージャーアイコンが元の状態に戻り、正しいアイコンが表示されます。フィードバックは間違っていて、それは何であるべきかです。私が間違ったドロップ可能な場所に置くと、他のすべての人が元の状態に戻ってフィードバックを表示します。これは、違った行動をするのは奇妙です。正しいものはすべて、彼らがやるべきことをします。 セットアップ:私はkeydownイベントで移動可能なアイコンで長い背景を持っています。 上部には、ドロッパーブルと隠れたアイコンが付いた(固定された)バーがあります。このアイコンは、実際のドラッグが隠れる一方、正しいドラッグ可能な状態で表示されます。これは、そうでないとdraggableが背景と一緒に動く理由は、ifがdroppableがあるbarとは異なるdivであるからです。
これは意味をなさないでしょう。ドラッグアンドドロップの復帰オブジェクトの1つがAdobe Edgeアニメーションの半分に間違っています

var icons = ['GOALS','CUSTOMER','MANAGER','PRODUCT','PRICE','DELIVER','BALANCE']; 

for(j=0;j<icons.length;j++){  
    sym.$(icons[j]).addClass('drag'+j); 
    // each draggable corresponds to a droppable 
    // by class name indexed 
    sym.$('.drag'+j).draggable({  
     revert: function(obj){ 
      if(obj===false){     
       // add feedback screen and sound and revert icon 
       sym.$('wrong').attr('src',"images/wrongSpot.png"); 
       sym.$('wrong').animate({'top': 23},1000);  
       sym.$("incorrectFX")[0].play();   
       return true; 
      }else{ 
       return false; 
      }// end if else statement   
     }// end revert 
    });// end draggable 

    sym.$('d'+j).droppable({ 
     accept: ".drag"+j, 
     drop: dropEvent 
    }); // end droppable 
} // end for loop 

k = 0; 
function dropEvent(event, ui){ 
    ui.draggable.position({ of: $(this), my: 'center', at: 'center' }); 
    ID = ui.draggable.attr("id").replace('Stage_',''); 
    console.log('this is the id name: ' + ID); 
    sym.$('wrong').animate({'top': 23},1000); 
    // replace wrong image with goodJob image since it is correct 
    sym.$('wrong').attr('src',"images/goodJob.png");  
    if (music.paused) { 
     sym.$("correctFX")[0].pause(); 
    } else { 
     sym.$("correctFX")[0].currentTime = 0; 
     sym.$("correctFX")[0].play(); 
    } 
    // since the droppable area is independant of the bg which move 
    // I implemented a substitute icon in the fixed area 
    sym.$(""+ID+"Copy").css({'opacity':1.0}); // show icon on the bar 
    sym.$(""+ID+"").css({'opacity': 0});  // hide the draggable icon 
    // count the number of correct to show feedback 
    k++; 
    if(k==7){ 
     sym.$('complete').animate({"left":0},700); 
     sym.$("completionFX")[0].play(); 
     sym.$('wrong').animate({'top':450},1000); 
    } 
} // end dropevent function 
+0

他の質問への回答は決して選択していません:http://stackoverflow.com/questions/36203393/how-to-disable-a-draggable-even-誤って落としてしまった場合、/ 36206380#comment60050830_36206380 - これはあなたのために機能しましたか?この新しい問題を表すjsfiddleの例を更新できますか? – Twisty

+0

いいえ何らかの理由で動作させることができません。エッジアニメイトが少し違ったことをするという事実と関係していると思います。私はあきらめていません。この新しいものも少しイライラします。ここにリンクがあります:http://mjpagedesign.com/fundraiser/始めるときには、矢印でトップ画面を下に移動する必要があります。その後、マネージャーに偽物を試して何が起こるかを見ることができます。その後、他のいくつかの答えを間違えてみてください、そして、あなたは彼らがうまくいくのを見るでしょう。奇妙な。私は通常、これらに問題はありません。 : – Edgedudette

+0

エッジには慣れていませんが、私を抑止するつもりはありません。 – Twisty

答えて

0

だけMANAGERが含まれているあなたの配列のインデックス2から問題が発生した場合、これは以下のコードを作成します。

sym.$('MANAGER').addClass('drag2'); 

あなたがdrag2ている他のクラスを、持っている場合は、これを選択に矛盾が生じます。あなたのコードに

以外のものがあるかどうかチェックしてください
+0

forループは、後でdrag2を使用してコードで使用された別のループと競合していたクラスdrag2をMANAGERに与えます。素晴らしい洞察力。ありがとう。 – Edgedudette

関連する問題