2017-08-25 13 views
0

HTMLコンテンツフォームのdivを別のものに複製しようとしていて、うまく動作するようになっていますが、 (アニメーション '不透明度'を使用すると、fadeOutがHTMLを混乱させるので)、アニメーション機能でラップされると、私の.html():は正しく動作しません。ここ は私のコードです:JQuery:アニメーションでラップされたときに一致するクラスが一致しない関数

JS:

WORKING:

function cloneContent($projectItem) { 
       $lightbox = jQuery('.lightbox');  

       $LBChild = $lightBox.find('*'); //any child 


       $LBChild.each(function(i, e) { 

        $LBclone = jQuery('.LB-clone'); //item to clone 

        _LBclasses = this.classList; 

        for(var i=0,len=_LBclasses.length; i<len; i++) { 
         if ($LBclone.hasClass(_LBclasses[i])) { 

          $LBmatch = jQuery(this); 
          $clonePair = $projectItem.parents('.gallery-item').find('.LB-clone.' + _LBclasses[i]); 
          $clonePairHtml = $clonePair.html(); 
          $LBmatch.html($clonePairHtml); 
         } 
        } 
       }); 
      } //close cloneContent 

が機能していない:

function cloneContent($projectItem) { 
       $lightbox = jQuery('.lightbox');  

       $LBChild = $lightBox.find('*'); //any child 


       $LBChild.each(function(i, e) { 

        $LBclone = jQuery('.LB-clone'); //item to clone 

        _LBclasses = this.classList; 

        for(var i=0,len=_LBclasses.length; i<len; i++) { 
         if ($LBclone.hasClass(_LBclasses[i])) { 

          $LBmatch = jQuery(this); 
          $clonePair = $projectItem.parents('.gallery-item').find('.LB-clone.' + _LBclasses[i]); 
          $clonePairHtml = $clonePair.html(); 

//When function is wrapped in animation, id doesn't work! 
           $LBmatch.animate({opacity: 0 },250, function() { 
            $LBmatch.html($clonePairHtml); 
           }).animate({opacity : 1}, 500); 
          } 
         } 
        }); 
       } //close cloneContent 

ここで問題を明確にして、いくつかの警告とフィドルです:https://jsfiddle.net/popmouth/sg5sq72e/15/

+0

後、このようにそれを試していない - > https://jsfiddle.net/Lvxo9xax/私が働いていなかったものと少し不明であった – adeneo

+0

おかげで...私は私の質問を更新します。 –

+1

ああ、私はそれを参照してください。これは[ループ内のクロージャ](https://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example)の複製であり、すべての変数は**グローバル**です – adeneo

答えて

0

私はあなたがそれを間違ってやっていると思います。 NTOコールバック 機能

$LBmatch.animate({opacity: 0 },250, function() {      
     $LBmatch.html($clonePairHtml).animate({opacity : 1}, 500); 
}); 
+1

あなたは正しいかもしれませんが、これはなぜ優れていますか? –

+0

これは、最初のアニメーションが完了した後、2番目のアニメーションを適用する必要があるため、より良いです。$ LBmatch.animate({opacity:0}、250、complete:function {){ $ LBmatch.html( $ clonePairHtml)。アニメート({不透明度:1}、500); }); –

+0

チップをありがとう! :) –

関連する問題