【问题标题】:How to use slidedown and slideup with together如何一起使用slidedown和slideup
【发布时间】:2015-06-18 07:01:56
【问题描述】:

我想在jquery 中使用slideDown 和slideUp,但不想在一个元素上使用slideToggle。这是我使用的代码,但无法正常工作

$(".p8").click(function(){

$(".u8").slideDown(300);

$(".u8").slideUp(300);

});

我使用的 CSS

<li class="p8">   

 <ul class="u8">    

 <li><div><form><input type="text"></form></div></li>    

 </ul>    

 </li>    

p8是css图标,我想当它点击时,在u8上触发slideDown函数,再次点击时在u8上触发slideUp函数。我在 u8 div 中有一个表单。

现在如果我使用slideToggle 那么slideDown 触发器正确,但是当我点击表单的输入时,它会转到slideUp,因此我不想使用Toggle。

【问题讨论】:

  • 为什么不想使用 Toggle?

标签: jquery slidetoggle slidedown slideup


【解决方案1】:

Fiddle Demo

试试这个

$(".p8").click(function(){
    if($(this).hasClass("hide"))
       {
          $(".u8").slideDown(300);
           $(this).removeClass("hide")
       }
    else
    {
         $(".u8").slideUp(300);
        $(this).addClass("hide")
    }

});

【讨论】:

  • 所有答案都有一个问题,当它向下滑动并且我尝试在输入中写一些东西时,它关闭了! slideDown 如何保持向下位置,直到点击 p8 ?检查你的小提琴演示
【解决方案2】:

试试这个……然后告诉我……

最低版本:

$(".p8").click(function(){
    if(!$(".u8").hasClass("slided")) return $(".u8").addClass("slided").slideDown(300);
    $(".u8").removeClass("slided").slideUp(300);
});

加长版:

如果你需要做其他,如果图标是slidedUp或SlidedDown:

 $(".p8").click(function(){
    if(!$(".u8").hasClass("slided")){
         $(".u8").addClass("slided").slideDown(300);
         //here code when element slideDown
         return;
    }
    $(".u8").removeClass("slided").slideUp(300);
    //here code when element slideUp
});

防止输入点击事件传播

添加此代码:

$(".p8 input").on("click",function(){
    return false; //returning false prevent event propagation
});

工作示例 :: http://jsfiddle.net/Frogmouth/xv0Lk9qf/1/

【讨论】:

  • 所有答案都有一个问题,当它向下滑动并且我尝试在输入中写一些东西时,它关闭了! slideDown 如何保持向下位置,直到 p8 点击?
  • 当您单击该字段时:单击事件会传播到所有“亲戚”元素,并且.P8 会释放他的处理程序。您需要防止事件传播...看看我的答案。
  • ;) 没问题,伙计!享受 JS!
猜你喜欢
  • 1970-01-01
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
相关资源
最近更新 更多