3

当谈到排队 jQuery 效果和 jQuery UI 效果时,我真的很困惑。当我做

$('#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>

非常感谢任何帮助

谢谢比约恩

4

3 回答 3

3

beaviour 似乎是 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 回答