【问题标题】:jQuery Toggle Div SwitcherjQuery Toggle Div 切换器
【发布时间】:2010-07-30 10:16:28
【问题描述】:

我正在尝试构建一个常见问题解答页面。该页面将有 2 列:第一列将包含问题列表,第二列将包含答案。

基本上我想隐藏答案列,当点击一个问题时,它会淡入。当点击另一个问题时,旧答案会淡出,新答案会淡入。所以我猜是切换/开关效果?

这是我从 Drupal 输出的 html 的结构:

<!-- Question column -->

<div id="question>

     <div class="views-row views-row-1">
          <div class="question">Question 1 Here!</div>
     </div>

     <div class="views-row views-row-2">
          <div class="question>Question 2 Here!</div>
     </div>

      <div class="views-row views-row-3">
          <div class="question>Question 3 Here!</div>
     </div>

</div>


<!-- Answer column -->

<div id="answer>

     <div class="views-row views-row-1">
          <div class="answer">Answer 1 Here!</div>
     </div>

     <div class="views-row views-row-2">
          <div class="answer>Answer 2 Here!</div>
     </div>

      <div class="views-row views-row-3">
          <div class="answer>Answer 3 Here!</div>
     </div>

</div>

这就是我到目前为止所做的事情。我已经设法通过动画淡入淡出效果使第一个问题自行打开/关闭。当谈到隐藏其他 div 以显示新 div 时,我迷路了。你能帮忙调整一下我的 jQuery 插件吗?

      jQuery.fn.fadeToggle = function(speed, easing, callback) {

      return this.animate({opacity: 'toggle'}, speed, easing, callback);  

      };



$(document).ready(function() {

  $("#answer .views-row").hide();

  $("#question .views-row-1").click(function(){

  $("#answer .views-row-1").fadeToggle("slow");

  });

  });

非常感谢您的帮助! 干杯。

【问题讨论】:

    标签: jquery html toggle switch-statement fade


    【解决方案1】:

    认为这就是你所追求的:

    jQuery.fn.fadeToggle = function(speed, easing, callback) {
        return this.animate({opacity: 'toggle'}, speed, easing, callback);  
    };
    $(function() {
        $("#answer .views-row").hide();
        $("#question .views-row").click(function(){
            var i = $(this).index();
            $("#answer .views-row").eq(i).fadeToggle("slow").siblings().fadeOut();
        });
    });
    

    You can give it a try here,我们在这里所做的是获取您单击顶部的&lt;div&gt;.index(),并在下面的索引处显示相应的&lt;div&gt;(使用.eq())。 .siblings().fadeOut() 只是一个猜测,它隐藏了先前的答案,因此一次只显示一个,如果您想一次显示任何数字,只需删除该部分即可。 ​

    【讨论】:

    • 您好,尼克,感谢您的快速回复!你的例子正是我想要的。加上一点 CSS 就完美了。但我似乎无法让它工作。我认为这是因为我稍微简化了 html,这弄乱了 div 的索引。让我给你一个我的常见问题页面的链接:gemini-lights.com/new/supportCheers!
    • @Chris - 你的 HTML 中的某些东西让 .index() 变得完全不稳定,仍在试图弄清楚是什么,复制整个 .content 它工作正常:jsfiddle.net/nick_craver/Zzy6N/1
    • @Chris - 啊,你在那个页面中使用的是非常旧的 jQuery 版本,1.2.6,有升级的机会吗?,最新的 1.4.2。
    • 试试吧!我马上更新。之后我应该使用你的第一个插件吗?
    • @Chris - 是的,如果升级 不是 一个选项,这里有一个适用于 1.2.x 和 1.3.x jQuery 的版本:jsfiddle.net/nick_craver/Zzy6N/2
    猜你喜欢
    • 2021-05-24
    • 2014-08-14
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2017-07-30
    • 1970-01-01
    相关资源
    最近更新 更多