如何知道是否已使用slideUp隐藏所有匹配的元素

时间:2013-05-31 19:18:30

标签: javascript jquery html css

我在这里进行了这项测试:http://jsbin.com/epihis/2/edit

我有三个段落,点击后一个接一个地滑动。一旦隐藏了所有的paragrapths,我想显示一个按钮来滑动它们。

我该怎么做?

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
   $(document).ready(function(){ 

     //jQuery mouseover function
       $("p#hovercolor").mouseover(function(){
        $("p#hovercolor").css("background-color","yellow");
       });

     //jQuery mouseout function
      $("p#hovercolor").mouseout(function(){
        $("p#hovercolor").css("background-color","green");
      });

     //jQuery click function
    $('input[name="Colorbtn"]').click(function(){
        $('.myBox').css('background', '#00aeef');
        $('.myBox').css('color', '#fff');
     });

     $('input[name="discolorbtn"]').click(function(){
        $('.myBox').css('background', '#fff');
        $('.myBox').css('color', '#000');
     });

     //Hide the matched elements with a sliding motion.
     $('p.sliderhider').click(function(){
       $(this).slideUp(); 
     });


  });    

</script>
</head>
<body>

  <p id="hovercolor">Move the mouse pointer over this paragraph.</p>

  <div class="myBox" style="border:1px solid blue; width:150px; height:150px; margin-bottom:20px;">
    BOX 1
  </div>

  <input type="button" value="Color myBox" name="Colorbtn"/>
  <input type="button" value="Dis-Color myBox" name="discolorbtn"/><br /><br />
  <hr>
  <p class="sliderhider" style="display:block; background: yellow; width:200px">Slide this up one at a time</p>
  <p class="sliderhider" style="display:block; background: yellow; width:200px">Slide this up one at a time</p>
  <p class="sliderhider" style="display:block; background: yellow; width:200px">Slide this up one at a time</p>

</body>
</html>

3 个答案:

答案 0 :(得分:3)

尝试:

 $('p.sliderhider').click(function () {
     $(this).slideUp(function () {
         if ($('p.sliderhider:visible').length === 0) {
             $('hr').after('<button id="show">Button</button>')
         };
     });
 });
 $(document).on('click', '#show', function () {
     $('p.sliderhider').show();
 })

<强> jsFiddle example

在slideUp的回调中,您可以检查可见段落的长度,当没有剩余时,生成按钮以再次显示它们。

答案 1 :(得分:1)

jQuery允许你传递一个回调,一旦动画完成就会被触发:

$('p.sliderhider').click(function(){
    $(this).slideUp({'complete': function() {
        // show "slide down" button here
    }}); 
});

答案 2 :(得分:1)

slideUp回调中写一个条件来检查是否所有p.sliderhider都被隐藏。

//Hide the matched elements with a sliding motion.
 $('p.sliderhider').click(function(){
   $(this).slideUp({'complete': function () {
     if ($('p.sliderhider:visible').length == 0) {
       $('#showPara').show();
     }        
   }}); 
 });

 $('#showPara').click(function (){
    $('p.sliderhider').slideDown();
 });

如果是,请显示可以slideDown全部.sliderhider

的按钮

DEMO: http://jsbin.com/epihis/5