36

我有一个div元素,所以当我点击它时,另一个div默认隐藏的元素是滑动和显示,这里是动画本身的代码:

$('#myelement').click(function(){
     $('#another-element').show("slide", { direction: "right" }, 1000);
});

我怎样才能做到这一点,所以当我再次单击#myelement时(当元素已经显示时)它将隐藏如下#another-element

$('#another-element').hide("slide", { direction: "right" }, 1000);?

所以基本上,它应该完全像 aslideToggle但具有show/hide功能。那可能吗?

4

7 回答 7

58

切换事件在 1.8 版中已弃用,并在 1.9 版中删除

尝试这个...

$('#myelement').toggle(
   function () {
      $('#another-element').show("slide", {
          direction: "right"
      }, 1000);
   },
   function () {
      $('#another-element').hide("slide", {
          direction: "right"
      }, 1000);
});

注意:此方法签名在 jQuery 1.8 中已弃用,并在 jQuery 1.9 中删除。jQuery 还提供了一个名为 .toggle() 的动画方法,用于切换元素的可见性。是否触发动画或事件方法取决于传递的参数集jQuery docs

为方便起见,提供了 .toggle() 方法。手动实现相同的行为相对简单,如果 .toggle() 内置的假设证明是有限的,这可能是必要的。例如,如果将 .toggle() 应用于同一元素两次,则不能保证正常工作。由于 .toggle() 内部使用了一个点击处理程序来完成它的工作,我们必须解除对点击的绑定以移除一个附加在 .toggle() 中的行为,这样其他的点击处理程序就可以在交火中被捕获。该实现还在事件上调用 .preventDefault() ,因此如果在元素上调用了 .toggle() ,则不会跟踪链接并且不会单击按钮,jQuery docs

您可以使用显示在可见性和单击隐藏之间切换。如果元素可见,则可以对可见性设置条件,然后隐藏其他显示它。请注意,您将需要jQuery UI来使用显示/隐藏类似方向的附加效果

现场演示

$( "#myelement" ).click(function() {     
    if($('#another-element:visible').length)
        $('#another-element').hide("slide", { direction: "right" }, 1000);
    else
        $('#another-element').show("slide", { direction: "right" }, 1000);        
});

或者,只需使用切换而不是单击。通过使用切换,您将不需要条件 (if-else) 语句。正如 TJCrowder 所建议的那样。

现场演示

$( "#myelement" ).click(function() {     
   $('#another-element').toggle("slide", { direction: "right" }, 1000);
});
于 2012-04-25T06:54:17.317 回答
29

利用为您完成任务的jquery切换功能

.toggle() - 显示或隐藏匹配的元素。

$('#myelement').click(function(){
      $('#another-element').toggle('slow');
  });
于 2012-04-25T06:55:15.727 回答
3

这对你有用

   $("#button-name").click(function(){
        $('#toggle-id').slideToggle('slow');
    });
于 2014-12-04T08:04:42.573 回答
0

您可以使用.toggle()函数代替.click()....

于 2012-04-25T06:56:46.867 回答
0

您可以使用此代码来切换您的元素 var ele = jQuery("yourelementid"); ele.slideToggle('slow'); 这对你有用:)

于 2012-04-25T07:01:17.380 回答
0
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js</script>        <script>
$(document).ready(function(){
  $("button").click(function(){
    $("p").toggle();
  });
});
</script>
</head>
<body>
<p>Welcome !!!</p>
<button>Toggle between hide() and show()</button>
</body>
</html>
于 2021-01-26T11:14:36.357 回答
-3
$(document).ready( function(){
  $("button").click(function(){
    $("p").toggle(1000,'linear');
  });
});

现场演示

于 2015-02-18T10:59:14.313 回答