javascript - 单击事件后显示特定 div 并隐藏所有其他 div

标签 javascript jquery

我有三个 div 元素:

<div class="hide_banner" id="1"><img src="1.png"></div>
<div class="hide_banner" id="2"><img src="2.png"></div>
<div class="hide_banner" id="3"><img src="3.png"></div>

页面加载后,用户应该只能看到第一个 div。这是 JS/jQ 代码(完美运行):

$(document).ready(function() {
  $('.hide_banner').not('#' + 1).hide(3000);
});

用户可以通过单击此页面上的链接来选择另一个横幅:

<ul class="dropdown-menu" role="menu">
  <li><a href="#1" class="show_banner">Image 1</a></li>
  <li><a href="#2" class="show_banner">Image 2</a></li>
  <li><a href="#3" class="show_banner">Image 3</a></li>
</ul>

例如,单击第三个链接 (href="#3") 后,id="1"的 div 应隐藏,id="3"的 div 应显示。我有一个想法如何与 PHP 结合维护问题,但我想只用 JS/jQ 解决它,所以请帮忙! ;) 这是我的 JS/jQ 代码,它不起作用:

$(document).ready(function() {
  $('.hide_banner').not('#' + 1).hide(3000);
  $('a').click(function() {
    var id = $(this).attr('href');

    if(id == 1) {
        $(id).show(3000);
        $('#2').hide(3000);
        $('#3').hide(3000);

    }

    if(id == 2) {
        $(id).show(3000);
        $('#1').hide(3000);
        $('#3').hide(3000);

    }

    if(id == 3) {
        $(id).show(3000);
        $('#1').hide(3000);
        $('#2').hide(3000);

    }
  });

});

P.s.:我知道 id 的名字以数字开头是不正确的;)

最佳答案

真的,这里不需要 if...else 逻辑,也不需要指定第一个 id - 只需使用 :first:

$('.hide_banner').not(':first').hide(3000);
$('a').click(function() {
    var id = $(this).attr('href');
    $(id).show(3000);
    $('.hide_banner').not(id).hide(3000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="hide_banner" id="1">1</div>
<div class="hide_banner" id="2">2</div>
<div class="hide_banner" id="3">3</div>


<ul class="dropdown-menu" role="menu">
  <li><a href="#1" class="show_banner">Image 1</a></li>
  <li><a href="#2" class="show_banner">Image 2</a></li>
  <li><a href="#3" class="show_banner">Image 3</a></li>
</ul>

关于javascript - 单击事件后显示特定 div 并隐藏所有其他 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26785094/

相关文章:

jquery - 悬停时突出显示整行

javascript - 每个图像缩略图预览的删除按钮

javascript - 为什么填充 anchor 标记会创建重复的超链接?

javascript - 从选择中获取特定选项元素

javascript - Angular:在每一行上拆分 json 数据

javascript - 尝试实现指针事件: none in JavaScript

javascript - 如何让这个 JQuery slider 正确渲染幻灯片?

javascript - 在 NodeJS 中覆盖 res.write

javascript - AngularJS-在一定时间限制后在页面之间切换

javascript - IE7、IE8下图片文件上传及预览问题