【问题标题】:How to fadein and fadeout a Div with a close button?如何使用关闭按钮淡入和淡出 Div?
【发布时间】:2015-03-02 10:55:56
【问题描述】:

大家好,Brainiacs!

我已尽我所能。希望那里的众多 JQuery 专家中的一位可以帮助我。

看看我的JsFiddle

HTML:

<button type="button" id="aboutbutton" class="btnblue">About</button>

<br /><br />


<div id="contentboard">
      <button type="button" id="closebutton" class="btnclose">X</button>

      <p>
          Hello World!<br />
          Hello World!<br />
          Hello World!<br />
        Hello World!
      </p>
</div>

JS:

$('#aboutbutton').on('click', function() {
    if($('#contentboard').css('display') == 'none') {
      $('#contentboard').html(strAboutUs);
      $('#contentboard,#closebutton').fadeIn(1000);
    }
    else {
      $('#contentboard,#closebutton').toggle();
      $('#contentboard').html(strAboutUs);
      $('#contentboard,#closebutton').fadeIn(1000);
    }

  });


$('#closebutton').on('click', function() {
      $('#contentboard').fadeOut(1000);
});


这是我正在尝试做的事情:

默认情况下,内容板 div 带有一些内容是可见的,并且 div 包含一个关闭按钮。 当我单击关闭按钮时,div 淡出 - 完美。 当我单击蓝色的“关于”按钮时,我希望 div 淡入 - 完美。但在淡入时,关闭按钮不会出现。

我不明白为什么会这样。我尝试使用多个选择器,以便 div 和 closebutton 可以一起淡入淡出,但这也不起作用。

如何让关闭按钮与 div 一起出现和消失?

非常感谢任何帮助。

谢谢!

【问题讨论】:

  • 当您替换 html 时,按钮会消失...$('#contentboard').html(strAboutUs); ... new html 中没有按钮

标签: jquery html toggle fadein fadeout


【解决方案1】:

您的#closebutton 在您的#contentboard 中,因此,当您调用$('#contentboard').html(strAboutUs); 时它会被删除

试试这个:

我没有在$('#contentboard') 上调用.html(...),而是在$('#contentboard&gt;p') 上调用它,所以它只会替换&lt;p&gt; 内容,而您的#closebutton 不会消失!

var strAboutUs = "<p>Hello World!<br>" +
        "Hello World!<br>" +
        "Hello World!<br>" +
        "Hello World!<br>" +
        "Hello World!</p>";



$('#aboutbutton').on('click', function() {
    if($('#contentboard').css('display') == 'none') {
      $('#contentboard>p').html(strAboutUs); // Changed
      $('#contentboard,#closebutton').fadeIn(1000);
    }
    else {
      $('#contentboard,#closebutton').toggle();
      $('#contentboard>p').html(strAboutUs); // Changed
      $('#contentboard,#closebutton').fadeIn(1000);
    }

  });


$('#closebutton').on('click', function() {
      $('#contentboard').fadeOut(1000);
});
#contentboard {
 width:300px;
 height:auto;
 left:10;
 position:relative;
 background-color:#E0F5FF;
 -webkit-border-radius: 10;
 -moz-border-radius: 10;
 border-radius:10px;
 -webkit-box-shadow: 10px 10px 10px #666666;
 -moz-box-shadow: 10px 10px 10px #666666;
 box-shadow: 10px 10px 10px #666666;
 margin = 25px;
 padding = 25px;
}


.btnblue {
 background: #52baff;
 background-image: -webkit-linear-gradient(top, #52baff, #2980b9);
 background-image: -moz-linear-gradient(top, #52baff, #2980b9);
 background-image: -ms-linear-gradient(top, #52baff, #2980b9);
 background-image: -o-linear-gradient(top, #52baff, #2980b9);
 background-image: linear-gradient(to bottom, #52baff, #2980b9);
 -webkit-border-radius: 10;
 -moz-border-radius: 10;
 border-radius: 10px;
 text-shadow: 1px 3px 3px #000000;
 -webkit-box-shadow: 0px 2px 3px #666666;
 -moz-box-shadow: 0px 2px 3px #666666;
 box-shadow: 0px 2px 3px #666666;
 font-family: Arial;
 color: #ffffff;
 font-size: 24px;
 padding: 25px;
 text-decoration: none;
 margin-top:25px;
 margin-left:25px;
 margin-right:25px;
 width:250px;
}



.btnclose {
 background-color: #E5E5E5;
 color: #000000;
 font-weight: bold;
 position: absolute;
 right:1px;

 -webkit-border-radius:5px;
 -moz-border-radius:5px;
 border-radius:5px;

}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" id="aboutbutton" class="btnblue">About</button>

<br><br>


<div id="contentboard">
      <button type="button" id="closebutton" class="btnclose">X</button>

      <p>
        Hello World!<br>
        Hello World!<br>
        Hello World!<br>
        Hello World!
      </p>
    </div>

【讨论】:

  • 补充一下,else 部分中的切换不是只需要应用于外部 div 吗?
  • 这取决于您的期望。如果您对实际结果满意,则无需更改。
  • 是的,但它没有做任何事情......在你的代码中清理它,从 $('#contentboard,#closebutton') 中删除 #closebutton ,它不需要
  • Ninetainedo = 非常感谢!我不敢相信这就是改变内容所需要的全部!我非常感谢您的快速响应。
  • CodeGodie = 谢谢!我会清理的。
【解决方案2】:

你可以改变

$('#contentboard').html(strAboutUs);

到这里:

  $('#contentboard *').not("#closebutton").remove();
  /*this line will remove all content but not the closebutton*/

  $('#contentboard').append(strAboutUs);
  /*then you can add what you want to be the new content*/

这是一种方式……也许有帮助

【讨论】:

    【解决方案3】:

    为了隐藏和显示 div,你只需要使用 fadeIn fadeOut 方法。无需显示任何内容或不必显示 .html 字符串,但如果您确实想在关闭或关于按钮时更改内容,只需在 #contentboard p

    中添加 html
    $('#closebutton').click(function(){
    $('#contentboard').fadeOut('normal');
    });
    
    $('#aboutbutton').click(function(){
    $('#contentboard').fadeIn('normal');
    });
    

    【讨论】:

    • 点击关于按钮时没有要插入的按钮。将按钮标签添加到 var strAboutUs 后,您将看到一个按钮;但是,关闭按钮的点击事件 $(body).on('click','element', function(){code}) 也必须更改,以便它可以点击
    • 我明白你的意思了。您重新添加了最初删除的按钮,但为什么要删除它呢?
    • 这不是我的本意。我刚刚制作了提问者提供的初始代码并使其工作。
    • 在我看来,最好的解决方案是使用类 $('#aboutButton, #closeButton').click(function(){ $('#element') 创建和事件。 toggleClass('hide'); });然后这个类将有一个带有过渡的显示无属性。
    • 下次会做的,好先生!感谢您的建议!我是新手,我会在适当的时候适应它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多