3

jQueryEffectsとjQueryUIEffectsのキューイングに関しては本当に混乱しています。私がする時

$('#div_id').effect('bounce').effect('shake').fadeOut();

divはフェードアウトするよりも最初にバウンスしますが、シェイクは省略されます。

呼び出し

$('#div_id').effect('bounce').effect('shake');

すべてが期待どおりに機能します(シェイクよりも最初のバウンス)。

また

$('#div_id').effect('bounce').fadeOut();

期待どおりに動作します

ここに完全な例があります:

<!DOCTYPE html>
<html>
<head>
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
  <script>
  $(document).ready(function() {  
    var square = $('#square');

    $("#button_1").click(function() {
      square.effect('bounce'); // ok
    });

    $("#button_2").click(function() {
      square.effect('bounce').effect('shake'); // ok (bounces first, than shakes)
    });

    $("#button_3").click(function() {
      square.effect('bounce').fadeOut(); // ok (bounces first, than fades out)
    });

    $("#button_4").click(function() {
      square.effect('bounce').effect('shake').fadeOut(); // fail (bounces first, than fades out)
    });
  });
  </script>
</head>
<body>
  <p></p><p></p><p></p><p></p>
  <div id="square" style="width: 100px; height: 100px; background: blue; position: relative;"></div>

  <button id="button_1">bounce</button>
  <button id="button_2">bounce shake</button>
  <button id="button_3">bounce fadeOut</button>
  <button id="button_4">bounce shake fadeOut</button>
</body>
</html>

どんな助けでも大歓迎です

ありがとうBjörn

4

3 に答える 3

3

振る舞いはjQueryのバグのようです

可能な回避策は

$('#div_id').effect('bounce').effect('shake',function(){$(this).fadeOut()});

貢献して助けてくれたみんなに感謝します!

于 2012-06-28T06:29:58.830 に答える
2

コールバックを入れることができます#button_4

$("#button_4").click(function() {
      square.effect('bounce',function(){
            $(this).effect('shake',{ times:3 }, 300).fadeOut()          
      });
});

例:実際の例..たぶん^_^

説明: http://www.w3schools.com/jquery/jquery_callback.asp

于 2012-06-27T17:46:42.643 に答える
1

何が問題なのかわかりませんが、次のようにコールバックを明示的に使用することをお勧めします:

var square = $('#square');

$("#button_1").click(function() {
  square.effect('bounce'); // ok
});

$("#button_2").click(function() {
  square.effect('bounce').effect('shake'); // ok (bounces first, than shakes)
});

$("#button_3").click(function() {
  square.effect('bounce').fadeOut(); // ok (bounces first, than fades out)
});

$("#button_4").click(function() {
    square.effect('bounce').effect('shake',function(){$(this).fadeOut()});
});​

アップデート

実用的なソリューションのコードを更新しました。

作業例: jsfiddle

于 2012-06-27T17:47:36.730 に答える