Javascript JQuery显示/隐藏常见问题解答
当用户单击某个类元素时,我在使用JQuery显示和隐藏时遇到一些问题 我的HTML代码是: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个答案,我想让它对所有人都
<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;
*/