1

我试图让一个场景工作到我可以淡入淡出一个 div 的地方,用另一个 div 替换它。这部分我已经开始工作了,但是如果我淡入的 DIV 中包含 DIV,我的 DIV 就会完全消失。

例子:

<center>
        <ul id="menu">
            <li><a href="#content1">Home</a>&nbsp;&nbsp;|</li>
            <li><a href="#content2">Work</a>&nbsp;&nbsp;|</li>
            <li><a href="#content3">Blog</a>&nbsp;&nbsp;|</li>
            <li><a href="#content4">Contact</a></li>
        </ul>
    </center>
        <hr class="style-main">
        <center><img src="{image:homeHeaderImage}"></center>
</div>

 <div id="contentWrap">
   <div id="content1">
         Home, content should go here :)

     </div>

这行得通,如果 DIV“content1”的内容看起来像这样,它将完美地淡入淡出。但是,由于我想设置“content1”和“content2”等内容的样式,所以我已经将 DIV 放在里面。

<div id="contentWrap">
   <div id="content1">
         <div id="homeContent">
         Home, content should go here :(
         </div>

     </div>

这使得当我单击链接以淡化这个特定的 DIV 时,它又完全变白,没有内容。我无法弄清楚为什么它不会呈现内容。

我将它用于我的 jQuery 脚本

$(function() {
$('#contentWrap div').hide();
$('#contentWrap div:first').show();
$('#thumbs a:first').addClass('active');

$('#thumbs a').click(function() {
    if ($(this).hasClass('active') == true) {
        return false;
    }
    else {
        $('a.active').removeClass('active');
        $(this).addClass('active');

        $('#contentWrap div').fadeOut();
        var contentToLoad = $(this).attr('href');
        $(contentToLoad).fadeIn();

        return false;
    }
});

});

这是一个 jsFiddle,主菜单项是有问题的。如您所知,其他的工作正常。

http://jsfiddle.net/uyAzp/

4

3 回答 3

3

在您的 jQuery 中,您有这一行:

$('#contentWrap div').hide();

这会导致所有 div 隐藏,包括 #content1 中的 div

因此,当您单击主页按钮时,#content1 会使其淡化,但包含您要显示的信息的 #content1 内的 div 仍处于隐藏状态。

您可以通过将其添加到您的 css 来轻松解决它:

#homeContent{ display:block !important; }

尽管稍微重写您的 jQuery 可能会更好,这样您就不必一开始就隐藏所有这些 div。(通过您的 CSS 将它们展示:无)

于 2012-11-05T10:14:33.003 回答
1

您的 CSS 选择器设置为div选择#contentWrap.

如果您将它们更改#contentWrap > div为此将仅选择那些是直接子级的。

像这样:

jsFiddle

为避免它们在加载时同时显示,您应该display: none在 CSS 中添加#contentWrap > div

于 2012-11-05T10:41:21.727 回答
0

只需更新这一行:

$('#contentWrap div:first').show();

有了这个:

$('#contentWrap div:first-child').show();

看看这是否有帮助。

于 2012-11-05T10:35:01.110 回答