【问题标题】:How to minimize and maximize cards uniquely using jQuery如何使用jQuery独特地最小化和最大化卡片
【发布时间】:2021-10-31 16:43:34
【问题描述】:

我想创建单独最小化和最大化卡片的功能。

例如,我有 10 个卡片 div,每个卡片都有一个按钮来隐藏/显示 div。我已经从 w3School 的教程中尝试过,但我只能为一张卡而不是单独为所有其他卡做到这一点。

这段代码一次只能用于一个 div 我怎样才能使它对所有 div 都具有动态性?对于 div 的唯一 ID,我有 createdTime。 请帮忙

$(document).ready(function(event) {
  $(".toogleCard").click(function() {
    var status = $(event.currentTarget).attr('id');
    if ($(this).html() == "-") {
      $(this).html("+");
    } else {
      $(this).html("-");
    }
    $("status").slideToggle();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="toogleCard" id="uniqueid1">-</button>
<p id="uniqueid1">This is a paragraph.</p>

<button class="toogleCard" id="uniqueid1">-</button>
<p id="uniqueid2">This is a paragraph.</p>

<button class="toogleCard" id="uniqueid1">-</button>
<p id="uniqueid3">This is a paragraph.</p>

【问题讨论】:

  • 我已经更新了代码。但是我知道为什么它不起作用!
  • 对于toogleCard 按钮,您将ID uniqueid1 设置了三次。此外,一个 id 永远不应该在一个页面上多次使用,所以我建议在按钮上使用 data 属性,例如 data-paragraph-id
  • @Taxel 它将使用此权限切换所有段落!我想分别切换每一个。

标签: javascript html jquery angularjs


【解决方案1】:

您正在寻找的技术称为'Don't Repeat Yourself', or DRY

为了在这种情况下实现它,您可以通过在 buttonp 元素上使用相同的类来使 HTML 结构相同,因此可以无限重复。然后在 JS 中,您可以使用 jQuery 的 DOM 遍历方法,在本例中为 next(),将引发 click 事件的元素与需要显示/隐藏的目标元素相关联。

试试这个:

jQuery($ => {
  $(".toggleCard").click(e => {
    let $toggle = $(e.target);
    $toggle.text((i, t) => t === '-' ? '+' : '-');
    $toggle.next('.para').slideToggle();
  });
});
.toggleCard { display: block; }
.para { display: none; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="toggleCard">-</button>
<p class="para">This is a paragraph.</p>

<button class="toggleCard">-</button>
<p class="para">This is a paragraph.</p>

<button class="toggleCard">-</button>
<p class="para">This is a paragraph.</p>

【讨论】:

  • 非常感谢您的解释,但我有一个问题,如果按钮和段落位于不同的 div 中,它将不起作用...我的按钮位于卡片标题 div 中,而段落位于卡片正文中。它不工作
猜你喜欢
  • 1970-01-01
  • 2013-04-16
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多