【发布时间】:2014-10-25 22:43:50
【问题描述】:
我拼凑了以下 jQuery 来制作手风琴效果。这行得通...
$("#FAQs .answer").hide();
$("#FAQs .close").hide();
$("#FAQs .open").show();
// Click the #Expand button to show and hide .answer
$('#Expand').click(function() {
if ($(this).text() === 'Minimise FAQs') {
$(this).text('Expand FAQs');
$('#FAQs .answer').slideUp('fast');
$("#FAQs .close").hide();
$("#FAQs .open").show();
} else {
$(this).text('Minimise FAQs');
$('#FAQs .answer').slideDown('fast');
$("#FAQs .close").show();
$("#FAQs .open").hide();
}
});
// Click the Quesiton (h2) to show and hide the answer
$("#FAQs h2").addClass("link").click(function() {
$(this).parent().children(".answer").slideToggle('fast');
$(this).parent('li').children(".close").toggle();
$(this).parent('li').children(".open").toggle();
});
这段代码(上面)使以下 HTML 打开和关闭页面上的所有手风琴:
<section class="row m_b_zero">
<div class="inner-container">
<div class="box">
<div class="box-inner"> <div class="faq-controls">
<span id="Expand">Expand FAQs</span>
</div></div>
</div>
</div>
</section>
这仍然很有效。
但是。
我需要使用 jQuery 将该 HTML 注入到页面中,所以我将它拼凑在一起:
$(function() {
$( 'section:nth-child(2)' ).after( '<section class="row m_b_zero"><div class="inner- container"><div class="box"><div class="box-inner"><div class="faq-controls"><span id="Expand">Expand FAQs</span></div></div></div></div></section>' );
});
这会在第二个 <section> 标记之后注入与之前相同的手风琴控制器 HTML。
这几乎行得通。
HTML 已按预期注入,但按钮不起作用?它不会打开和关闭手风琴。
我已经确保这个 jQuery 被放置在控制手风琴的 jQuery 之后,并且它位于页面就绪函数中。
有人知道为什么它不起作用吗?
【问题讨论】:
-
您需要使用
$().on()将事件附加到动态添加的元素上
标签: javascript jquery html jquery-ui