我有一个FAQ列表,由链接(问题)组成,用于切换相应段落(答案)的隐藏/显示。每个链接/段落(问题/答案)使用单独的功能
我想使用一个函数来实现这一点,而不是为每个链接/段落(问题/答案)编写函数。
HTML:
<!--Q1-->
<p class="faq-question-container">
<a href="#" id="q1">Some question</a>
</p>
<p class="faq-answer" id="a1">Some answer</p>
<!--Q2-->
<p class="faq-question-container">
<a href="#" id="q2">Some question</a>
</p>
<p class="faq-answer" id="a2">Some answer</p>
<!--etc.-->
的jQuery
$('.faq-answer').hide();
//Q1
$("#q1").click(function(event) {
event.preventDefault();
$('#a1').slideToggle();
});
//Q2
$("#q2").click(function(event) {
event.preventDefault();
$('#a2').slideToggle();
});
//etc.
如何将上述jQuery代码简化为一个函数?
jQuery("#faq-question-container a").click(function(event) {
event.preventDefault();
jQuery(this).next('#faq-answer').slideToggle();
});
什么都不做。
答案 0 :(得分:1)
从您的代码开始,要带来的主要变化是
这给出了这段代码:
jQuery(".faq-question-container a").click(function(event) {
event.preventDefault();
jQuery(this).closest('.faq-question-container').next('.faq-answer').slideToggle();
});
另一种不假设特定HTML组合的解决方案:
$(".faq-question-container a[id^=q]").click(function(event) {
event.preventDefault();
$('#a'+this.id.slice(1)).slideToggle();
});
工作原理:
[id^=q]
是ID为q
的所有元素的选择器。this.id.slice(1)
从95
q95