Javascript JQuery显示/隐藏常见问题解答

Javascript JQuery显示/隐藏常见问题解答,javascript,jquery,Javascript,Jquery,当用户单击某个类元素时,我在使用JQuery显示和隐藏时遇到一些问题 我的HTML代码是: <div class="faqSectionFirst"> Question? <p class="faqTextFirst" style='text-align:justify'> <span> Some text. </span> </p> </div> 有人能帮我吗?这不管用。 我有20个问题,20个答案,我想让它对所有人都

当用户单击某个类元素时,我在使用JQuery显示和隐藏时遇到一些问题

我的HTML代码是:

<div class="faqSectionFirst">
Question?

<p class="faqTextFirst" style='text-align:justify'>
<span>
Some text.
</span>
</p>
</div>
有人能帮我吗?这不管用。 我有20个问题,20个答案,我想让它对所有人都有效。

如果我正确理解这个问题,你可以使用a。标题可以表示问题,可扩展面板可以显示答案。

尝试以下操作:

$('.faqSectionFirst').on("click", function () {
    $('p.faqTextFirst', this).toggle();
});

您的代码:

<div class="faqSectionFirst">
  Question?
 <p class="faqTextFirst" style='text-align:justify'>
  <span>
   Some text.
  </span>
 </p>
</div>
将确保仅隐藏或显示发生事件的元素。而
toggle()
是一种隐藏或显示它的方法。您必须有特定的jQuery版本才能使它们工作

阅读以下内容:

<div class="faqSectionFirst">
  Question?
 <p class="faqTextFirst" style='text-align:justify'>
  <span>
   Some text.
  </span>
 </p>
</div>
还有一件事。您必须有一个单独的div,一旦单击事件发生,问题应该显示在该div上。因为我提供的代码和回答您问题的代码将隐藏问题本身,不会留下任何更改来再次显示它!因此,请确保这不会发生。:)

祝你好运,伙计,干杯

使用

HTML jQuery

这可能不是最短的方法,但根据我的经验,它永远是最健壮的方法-因为jQuery的
hide()
show()
基本上是将属性
display:none
display:block
(分别)分配给链接到的元素
toggle()
类似于两者的组合,仍然只支持
display:block
。例如,如果您希望使用
display:inline
display:inline block
而不是
display:block
,则可能会得到不想要的结果

所以我的建议是:总是使用类来控制
CSS
,而不是
JavaScript
。这将确保你完全控制自己的风格。以下示例将很好地工作:

HTML

<a class="click-trigger" href="#"></a>
<div class="element"></div>
CSS

.click-trigger,
.element { height: 20px; width: 20px; }
.click-trigger { background-color: red; display: block; }
.element { background-color: blue; }

.hidden { display: none; }
.shown { display: block; }

/*
display alternatives not supported by jQuery's 'show()' nor 'toggle()':

display: inline;
display: inline-block;
display: list-item;
display: flex;
display: inline-flex;
display: table;
display: inline-table;
display: table-row-group;
display: table-column;
display: table-column-group;
display: table-header-group;
display: table-footer-group;
display: table-row;
display: table-cell;
display: table-caption;
*/

在本例中,为了简化,标记被剥离

你想让它表现得像手风琴(一次只能打开一个)还是可以打开几个?这很有效,谢谢!但是我如何在单击之前隐藏,而仅在单击之后显示呢?将此添加到上面(请参见上面的fiddle链接):$('.faqSectionFirst p.faqTextFirst').each(function(){$(this.hide();});
dd { display:none; }
dt { padding:4px; font:bold 13px verdana;cursor:pointer;}  
$(document).on('click','dt', function() {
    var myDD = $(this).next('dd');
    $('dd').slideUp();
    myDD.slideToggle();
});
<a class="click-trigger" href="#"></a>
<div class="element"></div>
var c = $('.click-trigger');
var e = $('.element');
c.click(function() {
    if (e.hasClass('hidden')) {
        e.removeClass('hidden').addClass('show');
    } else {
        e.removeClass('shown').addClass('hidden');
    }
});
.click-trigger,
.element { height: 20px; width: 20px; }
.click-trigger { background-color: red; display: block; }
.element { background-color: blue; }

.hidden { display: none; }
.shown { display: block; }

/*
display alternatives not supported by jQuery's 'show()' nor 'toggle()':

display: inline;
display: inline-block;
display: list-item;
display: flex;
display: inline-flex;
display: table;
display: inline-table;
display: table-row-group;
display: table-column;
display: table-column-group;
display: table-header-group;
display: table-footer-group;
display: table-row;
display: table-cell;
display: table-caption;
*/