【问题标题】:Many toggle-slide elements in one page一页中有许多切换幻灯片元素
【发布时间】:2012-12-24 08:18:38
【问题描述】:

我多次使用这个脚本来隐藏一些文本:

$(document).ready(function(){
  $("#button_to_click_to_toggle").click(function(){
    $("#hidden_div").slideToggle("medium");
  });
});

我想让同时切换两个隐藏的 div 成为不可能。

示例:

单击一个按钮 (#button1) = 显示与该按钮关联的隐藏 div (#div1)。

单击另一个按钮 (#button2) = 显示与该按钮关联的 div (#div2),同时 #div1 关闭(滑动关闭)。

单击另一个按钮 (#button3) = 显示与该按钮关联的 div (#div3),同时 #div2 关闭(滑动关闭)。

【问题讨论】:

标签: javascript jquery


【解决方案1】:

.button 类添加到所有按钮,将.div 类添加到所有div。那么这只是一个问题:

$(".button").on('click', function () {
  var id = this.id.replace('button', '');

  //properly toggle visibility of selected div
  if ($("#div" + id).is(":visible")) {
     $("#div" + id).slideUp();
  }
  else {
    $("#div" + id).slideDown();
  }
   //hide all divs except the selected one
   $(".div").not("#div" + id).slideUp();
});

http://jsfiddle.net/6Lhxm/

【讨论】:

  • @Wobot 确保您在我的示例中正确使用了“button”和“div”类——您的 HTML 需要兼容。您可以使用您正在使用的相关 HTML / JS 代码创建一个 jsfiddle,我会尽力帮助您。
  • @Wobot 似乎对我有用;是否有特定的浏览器无法使用?
  • @Wobot 我刚刚在 Chrome/IE8+9 中测试了小提琴并且它有效。这可能是一个缓存问题。您是否在控制台中收到错误消息?
【解决方案2】:

还可以在点击时隐藏所有 div,然后只显示相关的:

javascript:

$(document).ready(function () {
  $("button").click(function () {
    $("div").hide();
    $(this).next().show();
  });
});

html:

<button type="button">one</button>
<div id="one">one</div>
<button type="button">two</button>
<div id="two">two</div>
<button type="button">three</button>
<div id="three">three</div>

http://jsfiddle.net/x7Ehq/

【讨论】:

  • 我也设法执行类似此代码的操作,但添加幻灯片功能时出现问题。
  • 我知道你现在有了一个可行的答案,但是要使用上面的方法,你可以让 slideDown 成为 slideUp 函数的回调:jsfiddle.net/x7Ehq/2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
  • 2019-09-06
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
相关资源
最近更新 更多