【发布时间】:2013-11-06 09:06:26
【问题描述】:
我写的一些 jQuery 有一个小问题。 我有两个按钮,它们下面都有一个隐藏的 div。单击按钮时,相应的 div 会使用 slideDown 或 slideUp 动画进入或退出视图。 我遇到的问题是,当调用 slideUp(隐藏 div)时,它也隐藏了按钮。这是不正确的,因为按钮需要保持原位,并且只有包含表格的 div 需要进行动画处理。
我在下面创建了一个 jFiddle 来更好地解释我的意思:
这是我的代码:
HTML:
<div id="rightContent">
<div class="" id="yourAssessments">
<h3>Your Assessments</h3>
<div class="innerPadding">
<h4>Please choose an assessment: </h4>
<div class="onlineModuleAssessmentWrapper">
<div class="assessmentButton" data-assessment-id="1">Swim Instructor Default</div>
<div data-assessment-id="1" class="assessmentTableWrap">
<table>
<tr>
<td>
Planning </td>
<td>
Compelted
</td>
</tr>
<tr>
<td>
Doing It </td>
<td>
Compelted
</td>
</tr>
<tr>
<td>
Learning and Communication Styles/Techniques </td>
<td>
Compelted
</td>
</tr>
<tr>
<td>
Debrief </td>
<td>
Compelted
</td>
</tr>
</table>
</div>
</div>
<div class="onlineModuleAssessmentWrapper">
<div class="assessmentButton" data-assessment-id="3">Test Assessment 3</div>
<div data-assessment-id="3" class="assessmentTableWrap">
<table>
<tr>
<td>
Planning </td>
<td>
Compelted
</td>
</tr>
<tr>
<td>
Doing It </td>
<td>
Compelted
</td>
</tr>
<tr>
<td>
Learning and Communication Styles/Techniques </td>
<td>
Compelted
</td>
</tr>
<tr>
<td>
Debrief </td>
<td>
Compelted
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
jQuery:
jQuery(".assessmentTableWrap").hide();
jQuery(document).on("click", '.assessmentButton', function () {
var linkedAssessmentId = jQuery(this).attr("data-assessment-id");
if (jQuery("div[data-assessment-id=" + linkedAssessmentId + "]").is(":hidden")) {
jQuery("div[data-assessment-id=" + linkedAssessmentId + "]").slideDown("slow");
} else {
jQuery("div[data-assessment-id=" + linkedAssessmentId + "]").slideUp("slow");
}
});
任何人都可以看到为什么会发生这种情况或我哪里出错了吗? 谢谢!!
【问题讨论】:
-
您可以使用 slideToggle 代替。此外,除非您表示表格数据,否则不要使用表格。使用 UL 和 LI 制作手风琴。
-
因为你的按钮在你隐藏的div中