用 JQuery 淡入淡出 div

Fade div in and out with JQuery

我在这里失去了理智.....

我想在同一页面上淡入和淡出 div。我不知道 JQuery 所以我开始搜索我想要的东西。

我找到了 this。它完全符合我的要求(在 Fiddle 中)。

所以我开始复制和其他东西,但我就是不会工作

这是我所做的....

在我的 <head> 中,我添加了 JQuery 和 CSS 样式

<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
$('#btn').click(function(e){    
    $('#fancy, #btn').fadeOut('slow', function(){
        $('#bank, #btn-bk').fadeIn('slow');
    });
});

$('#btn-bk').click(function(e){    
    $('#bank, #btn-bk').fadeOut('slow', function(){
        $('#fancy, #btn').fadeIn('slow');
    });
});
</script>
<style>
#bank {display:none;}
#btn-bk {display:none;}
</style>

在正文中我放置了 HTML

<div><a href="#" id="btn">Show bank div and hide fancy div</a></div>
<div id="btn-bk"><a href="#">back</a></div>
<div id="bank">Bank Div</div>
<div id="fancy">Fancy Div</div>

它什么都不做。我不明白我做错了什么!

男.

它什么都不做,因为你把代码放在了头部,你没有等待页面加载,当它执行时,选择器(例如 $('#btn'))return空对象。或者:

  1. 将您的代码移至下方 </body>
  2. 使用 jQuery "on load" 处理程序 ($())。

一个区别是它们的方法是在 jquery onload 方法中定义的。当 JQuery 尝试绑定到元素时,它们实际上还不存在!尝试像这样包装你的 Javascript...

$(window).load(function(){
$('#btn').click(function(e){    
    $('#fancy, #btn').fadeOut('slow', function(){
        $('#bank, #btn-bk').fadeIn('slow');
    });
});

$('#btn-bk').click(function(e){    
    $('#bank, #btn-bk').fadeOut('slow', function(){
        $('#fancy, #btn').fadeIn('slow');
    });
});
});

将您的 JS 代码包装在 document.ready 语句中:

$(function () {
    $('#btn').click(function(e){
        $('#fancy, #btn').fadeOut('slow', function(){
            $('#bank, #btn-bk').fadeIn('slow');
        });
    });

    $('#btn-bk').click(function(e){
        $('#bank, #btn-bk').fadeOut('slow', function(){
            $('#fancy, #btn').fadeIn('slow');
        });
    });
});

它实际上会做什么,它会等到您的 文档对象模型 (DOM) 准备好执行 Javascript。

您可以使用 $(window).load({}),但在这种情况下,您的整个页面(包括图像和 iframe)将被完全下载, 只有 THEN 你的 Javascript 会 运行 (Source)

在简单的页面上还好,但在比较复杂的场合就让人头疼了。