使用jQuery切换显示/隐藏

时间:2016-05-13 10:06:01

标签: javascript jquery css

( function( $ ) {

var $f = $;

$('.entry-content').hide();

$f(function(){
        $f(".entry-title" ).toggle(
            function() {
                $f(this).parents(".post").children('.entry-content').slideUp('fast');
            },
            function() {
                $f(this).parents(".post").children('.entry-content').slideDown('fast');
            }
        );
});

} )( jQuery );

JSFIDDLE

非常基本我想但是,我想点击.entry-title链接以显示.entry-content类的内容。但是,似乎我必须点击链接两次才能展开内容。这是为什么以及如何解决这个问题?不知道我在这里做错了什么。

此外,有没有办法在另一个打开时关闭之前打开的div? 有点像手风琴。

3 个答案:

答案 0 :(得分:3)

使用 slideToggle() 在它们之间切换。

  

toggle event 在jQuery 1.8中已弃用,已在jQuery 1.9中删除。



var $ele = $('.entry-content').hide(); // hide initially
$(".entry-title").click(function(e) { // bind click event handler
  e.preventDefault(); // prevent default click event handler
  var $ele1 = $(this).parents(".post").children('.entry-content').slideToggle('fast'); // toggle the animation
  $ele.not($ele1).slideUp(); // slide up remaining
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="post">
  <p class="destaques-data">2010-03-10</p>
  <h3><a href="#" class="entry-title">Mauris aliquet mattis metus</a></h3>
  <p>Requerente: <a href="http://localhost:8888/aspp/requerente/ornare/" rel="tag">Ornare</a>  <a href="http://localhost:8888/aspp/requerente/pede/" rel="tag">Pede</a> Localização: <a href="http://localhost:8888/aspp/localizacao/matosinhos/" rel="tag">Matosinhos</a> Tipologia:
    <a href="http://localhost:8888/aspp/tipologia/amet/" rel="tag">Amet</a>  <a href="http://localhost:8888/aspp/tipologia/elit/" rel="tag">Elit</a>
  </p>
  <div class="entry-content">
    <p>Aliquam aliquet, est a ullamcorper condimentum, tellus nulla fringilla elit, a iaculis nulla turpis sed wisi. Fusce volutpat. Etiam sodales ante id nunc. Proin ornare dignissim lacus. Nunc porttitor nunc a sem. Sed sollicitudin velit eu magna. Aliquam
      erat volutpat. Vivamus ornare est non wisi. Proin vel quam. Vivamus egestas. Nunc tempor diam vehicula mauris. Nullam sapien eros, facilisis vel, eleifend non, auctor dapibus, pede.</p>
  </div>
</div>
<div class="post">
  <p class="destaques-data">2006-11-08</p>
  <h3><a href="#" class="entry-title">Cras aliquam massa ullamcorper sapien</a></h3>
  <p>Requerente: <a href="http://localhost:8888/aspp/requerente/enim/" rel="tag">Enim</a> Localização: <a href="http://localhost:8888/aspp/localizacao/matosinhos/" rel="tag">Matosinhos</a> Tipologia: <a href="http://localhost:8888/aspp/tipologia/ipsum/" rel="tag">Ipsum</a>
  </p>
  <div class="entry-content">
    <p>Pellentesque vel dui sed orci faucibus iaculis. Suspendisse dictum magna id purus tincidunt rutrum. Nulla congue. Vivamus sit amet lorem posuere dui vulputate ornare. Phasellus mattis sollicitudin ligula. Duis dignissim felis et urna. Integer adipiscing
      congue metus. Nam pede. Etiam non wisi. Sed accumsan dolor ac augue. Pellentesque eget lectus. Aliquam nec dolor nec tellus ornare venenatis. Nullam blandit placerat sem. Curabitur quis ipsum. Mauris nisl tellus, aliquet eu, suscipit eu, ullamcorper
      quis, magna. Mauris elementum, pede at sodales vestibulum, nulla tortor congue massa, quis pellentesque odio dui id est. Cras faucibus augue.</p>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

只需改变你的功能:

$f(".entry-title" ).toggle(
            function() {
                $f(this).parents(".post").children('.entry-content').slideDown('fast');
            },
            function() {
                $f(this).parents(".post").children('.entry-content').slideUp('fast');
            }
        );

它会起作用。

答案 2 :(得分:0)

这个JSFiddle显示了工作代码,如果您想添加ID或者使用类或者添加您拥有的代码(关于父子关系的东西),这取决于您,但这是基本的做这样的幻灯片工作:

$(document).ready(function() {
  $(".entry-content").hide();
  $(".entry-title").click(function() {
    if ($(".entry-content").is(":hidden")) {
      $(".entry-content").slideDown();
    } else {
      $(".entry-content").slideUp();
    }
  });
  return false;
  /* or e.preventDefault(); */
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="post">
  <p class="destaques-data">2010-03-10</p>
  <h3><a href="#" class="entry-title">Mauris aliquet mattis metus</a></h3>
  <p>Requerente: <a href="http://localhost:8888/aspp/requerente/ornare/" rel="tag">Ornare</a>  <a href="http://localhost:8888/aspp/requerente/pede/" rel="tag">Pede</a> Localização: <a href="http://localhost:8888/aspp/localizacao/matosinhos/" rel="tag">Matosinhos</a> Tipologia:
    <a
    href="http://localhost:8888/aspp/tipologia/amet/" rel="tag">Amet</a> <a href="http://localhost:8888/aspp/tipologia/elit/" rel="tag">Elit</a>
  </p>
  <div class="entry-content">
    <p>Aliquam aliquet, est a ullamcorper condimentum, tellus nulla fringilla elit, a iaculis nulla turpis sed wisi. Fusce volutpat. Etiam sodales ante id nunc. Proin ornare dignissim lacus. Nunc porttitor nunc a sem. Sed sollicitudin velit eu magna. Aliquam
      erat volutpat. Vivamus ornare est non wisi. Proin vel quam. Vivamus egestas. Nunc tempor diam vehicula mauris. Nullam sapien eros, facilisis vel, eleifend non, auctor dapibus, pede.</p>
  </div>
</div>
<div class="post">
  <p class="destaques-data">2006-11-08</p>
  <h3><a href="#" class="entry-title">Cras aliquam massa ullamcorper sapien</a></h3>
  <p>Requerente: <a href="http://localhost:8888/aspp/requerente/enim/" rel="tag">Enim</a> Localização: <a href="http://localhost:8888/aspp/localizacao/matosinhos/" rel="tag">Matosinhos</a> Tipologia: <a href="http://localhost:8888/aspp/tipologia/ipsum/" rel="tag">Ipsum</a>
  </p>
  <div class="entry-content">
    <p>Pellentesque vel dui sed orci faucibus iaculis. Suspendisse dictum magna id purus tincidunt rutrum. Nulla congue. Vivamus sit amet lorem posuere dui vulputate ornare. Phasellus mattis sollicitudin ligula. Duis dignissim felis et urna. Integer adipiscing
      congue metus. Nam pede. Etiam non wisi. Sed accumsan dolor ac augue. Pellentesque eget lectus. Aliquam nec dolor nec tellus ornare venenatis. Nullam blandit placerat sem. Curabitur quis ipsum. Mauris nisl tellus, aliquet eu, suscipit eu, ullamcorper
      quis, magna. Mauris elementum, pede at sodales vestibulum, nulla tortor congue massa, quis pellentesque odio dui id est. Cras faucibus augue.</p>
  </div>
</div>