1

私は現在、最初の「p」タグのすべてを非表示にし、次にクリック関数を起動して残りのdivのp要素を切り替えるこのコードを機能させています。

<div class="col">
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
<ul>
   <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
   <li>Aliquam tincidunt mauris eu risus.</li>
   <li>Vestibulum auctor dapibus neque.</li>
</ul>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>           
<div class="sub-content-btn">Find out more</div>
</div>
jQuery('.col').each(function() { 
    jQuery(this).find('p:not(:first)').hide();
  });

  jQuery('.sub-content-btn').click(function() {
    jQuery(this).toggleClass('active');
    if(jQuery(this).hasClass('active')){
      jQuery(this).parent('.col').find('p').show();
    } else {
      jQuery(this).parent('.col').find('p').hide();
      jQuery(this).parent('.col').find('p:first').show();
    }
  });

このコードを修正して、pタグだけでなくpタグとul要素を非表示にしてから、すべての要素を切り替えるにはどうすればよいですか?問題のdivにはulが含まれます。

4

2 に答える 2

2

これを試して

jQuery('.col').each(function() { 
  var $this= jQuery(this);
  $this.find(':not(p:first, .sub-content-btn)').hide();

});

jQuery('.sub-content-btn').click(function() {
  var $this= jQuery(this);
  var $parent=  $this.parent('.col');
  $this.toggleClass('active');
  if($this.hasClass('active')){
    $parent.find('p').show();
  } else {
    $parent.find('p').hide();
    $parent.find('ul').hide();
    $parent.find('p:first').show();
 }
});
于 2013-01-10T09:38:39.587 に答える
0

これを試して:

jQuery('.col').each(function () {
  jQuery(this).find(':not(p:first, .sub-content-btn)').hide();
});

jQuery('.sub-content-btn').click(function () {
  var $btn = jQuery(this);
  $btn.toggleClass('active');
  if ($btn.hasClass('active')) {
    $btn.siblings().show();
  } else {
    $btn.siblings().not('p:first').hide();
  }
});

フィドルの例

于 2013-01-10T09:38:39.957 に答える