【问题标题】:jQuery: toggling visibility of answers in a Q&A list generated in php by clicking on questionsjQuery:通过单击问题在 php 中生成的问答列表中切换答案的可见性
【发布时间】:2012-02-22 02:48:09
【问题描述】:

我有一个由 php 生成的问答列表。常见问题解答中的问题和答案的数量是可变的。使用 javascript,我想切换答案的可见性,因此当用户单击问题时,它将显示出来。使用 php,我可以对问题和答案进行计数,并使用计数整数为问题分配 id 或链接,或为答案分配类/id 或锚点。但是我不确定如何在单独的 javascript 中生成相同的计数....我不太懂 javascript :(

echo'<dl id="faq-list">';
$i = 1;
foreach(get_field('faq_qa') as $faq) :
    $count = $i++;
    echo'<dt class="question"><a href="#answer-'.$count.'">'.$faq['faq_question'].'</a></dt><dd class="answer answer-'.$count.'">'.$faq['faq_answer'].'</dd>';
endforeach;
echo'</dl>';

【问题讨论】:

    标签: php javascript jquery foreach count


    【解决方案1】:

    假设您的 HTML 结构不会改变,您可以将 click 事件处理程序绑定到 dt 元素并简单地显示以下同级(dd):

    $(document).ready(function() {
        $("#faq-list").on("click", "dt.question", function() {
            $(this).next().show();
        });
    });
    

    上面需要jQuery 1.7+,因为它使用on 方法。如果您使用的是旧版本,请查看delegate,或者直接使用click

    我选择了父 #faq-list 元素并将事件处理程序绑定在那里,因为它比将许多事件处理程序绑定到所有单独的 dt 元素更有效。这样,就有一个事件处理程序检查事件是否源自匹配的dt.question 元素。这是可能的,因为事件会从它们起源的 DOM 中冒泡(事件源自 dt,然后冒泡到父级,即 #faq-list)。

    【讨论】:

      【解决方案2】:

      你可以使用一些 jQuery

      $('#question-1').click(function() {
        $('.answer-1').show('slow');
      });
      

      但是,您还需要使用这样的唯一 ID 来识别您的问题

      <dt class="question question-'.$count.'">
      

      【讨论】:

      • 这也是我的想法,如您在上面看到的,我的代码中确实有 $count;但是我也不确定如何在 javascript 中“计数”;如果我按照上面的建议使用 jquery 函数,那不是仅适用于问题/答案集 #1 吗?如果我有 8 个 QA 怎么办?还是20?还是 32?等
      • @Fulvio - 你不需要在你的 JS 中“计算”它们。请参阅我的答案,它适用于所有问题/答案集,无论有多少。
      • 您需要动态设置从 1 到 8 或 20 的数字。
      【解决方案3】:

      假设你所有的 dd 元素在页面加载时都被 CSS 隐藏了,试试这个:

      $(function() {
          $('dt.question').on('click', function() {
              $(this).next().toggle();
          });
      });
      

      【讨论】:

        猜你喜欢
        • 2020-03-07
        • 1970-01-01
        • 2016-10-29
        • 2015-04-17
        • 2020-12-22
        • 2021-09-23
        • 1970-01-01
        • 2022-11-22
        • 2013-02-26
        相关资源
        最近更新 更多