【问题标题】:Two toggle and two click on the same function with different behavior for each click两次切换和两次单击相同的功能,每次单击具有不同的行为
【发布时间】:2018-03-30 05:44:00
【问题描述】:

我尝试使用 java 脚本创建一个事件,它允许我在不同的卡片之间切换以及隐藏和显示。 有一张四张卡片,当你点击第一张卡片时,它会显示卡片下方的信息,当你再次点击它时,它会隐藏它,四张卡片也是如此, 但我还希望当您单击第二张或第三张卡以防第一张卡打开时,它会自动关闭第一张卡以显示第二张卡。 又是四张卡片之间的切换事件。

我尝试再点击两次,但似乎我在两者之间造成了冲突。

我该如何解决这个问题。

这是我使用的代码:

    $("a[data-toggle]").on("click", function(e) {
      e.preventDefault();  // prevent navigating
      var selector = $(this).data("toggle");  // get corresponding element
      $("article").hide();
      $(selector).show();
    });
    article:not(#article1) {
        display: none;
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" data-toggle="#article1">cart1</a>
<a href="#" data-toggle="#article2">cart 2</a>
<a href="#" data-toggle="#article3">cart 3</a>
<a href="#" data-toggle="#article4">cart 4</a>
    
<article id="article1">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor</article>
<article id="article2">sit amet, consectetur adipiscing elit, sed do eiusmod tempor</article>
<article id="article3">consectetur adipiscing elit, sed do eiusmod tempor</article>
<article id="article4">adipiscing elit, sed do eiusmod tempor</article>

【问题讨论】:

  • 我将您的代码放入了 codepen,但我不明白您想要实现什么,因为它似乎对我有用? codepen.io/anon/pen/MEZqEv?editors=1010 在选项之间单击会显示相关文章,您能否准确解释您希望看到的内容和实际看到的内容?
  • 当我在卡片之间点击它显示文章它正在工作,但同样我希望如果卡片 3 是打开的,我希望当我点击它时它会隐藏或显示
  • 我在下面添加了这个函数来获取两个事件,但是我现在点击了两次,只有第一个函数在运行

标签: javascript jquery click toggle


【解决方案1】:

这里有一个稍微修改的方法来实现你的切换功能,请为所有article元素添加一个父元素并设置为display:none,当你想显示它时,附加类active

如果这能解决您的问题,请告诉我!

$("a[data-toggle]").on("click", function(e) {
  e.preventDefault();
  var toggleThis = $('article' + $(this).attr('data-toggle') + '')
  if (toggleThis.hasClass('active')) {
    toggleThis.toggleClass('active');
  } else {
    $("article.active").removeClass('active');
    toggleThis.addClass('active');
  }
});
.wrapper article {
  display: none;
}

article.active {
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" data-toggle="#article1">cart1</a>
<a href="#" data-toggle="#article2">cart 2</a>
<a href="#" data-toggle="#article3">cart 3</a>
<a href="#" data-toggle="#article4">cart 4</a>
<div class="wrapper">
  <article id="article1">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor</article>
  <article id="article2" class="active">sit amet, consectetur adipiscing elit, sed do eiusmod tempor</article>
  <article id="article3">consectetur adipiscing elit, sed do eiusmod tempor</article>
  <article id="article4">adipiscing elit, sed do eiusmod tempor</article>
</div>

【讨论】:

  • 这是工作的兄弟,但是当你第二次点击同一张卡片时,我想隐藏或显示它
  • @NelhAmstrong 现在可以查看了吗?
【解决方案2】:

这应该在点击时隐藏文章而不破坏其他功能:

$("article").click(function() {
    $(this).hide();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 2017-11-08
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多