我从bootstrap手拿这个手风琴。箭头图标指向向下。
然后我点击Competency1,我得到(Competency1 icon up ,Competency2 icon down ):
但是,如果我现在点击Competency2,我会得到(Competency1图标仍然向上,Competency2图标向上):
这是引导程序中的错误,还是可以轻松修复?
感谢。
答案 0 :(得分:35)
如果没有看到您的代码,很难提供建议。您可能只在'show'事件上触发图像交换(检查js中的拼写错误)。
以下是我用来在我的网站上创建相同效果的内容:
<强> HTML:强>
<div class="accordion">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">
<i class="icon-chevron-down"></i>
Collapsible Group Item #1
</a>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">
<i class="icon-chevron-down"></i>
Collapsible Group Item #2
</a>
</div>
</div>
</div>
<强> JavaScript的:强>
$('.accordion').on('show hide', function (n) {
$(n.target).siblings('.accordion-heading').find('.accordion-toggle i').toggleClass('icon-chevron-up icon-chevron-down');
});
答案 1 :(得分:1)
似乎发生了这种情况,因为当Competency1已经打开时,单击Competency2会折叠Competency1。因为Competency1在以这种方式折叠时没有发生单击事件,所以插入符号仍然指向上方。
答案 2 :(得分:0)
这是bootstrap中的一个错误。如果在切换其中一个标题为.accordion-toggle的标题时检查标记,则会切换该类是否已折叠。当您单击另一个打开的标题时虽然它没有将折叠类添加到open元素的标题上。这为我解决了这个问题:
$('.accordion-toggle').click(function() {
if($(this).hasClass('collapsed')) {
$('.accordion-toggle').not(this).addClass('collapsed');
}
});
答案 3 :(得分:0)
您可以使用此代码更改图标。
脚本部分:
jQuery('document').ready(function() {
$('.accordion').on('show hide', function (n) {
var targetEle = $(n.target).siblings('.accordion-heading').find('.accordion-toggle');
if($(n.target).hasClass("in")){
targetEle.children(".icon-chevron-down").show();
targetEle.children(".icon-chevron-up").hide();
}
else{
targetEle.children(".icon-chevron-down").hide();
targetEle.children(".icon-chevron-up").show();
}
});
});
注意:要使用此代码,在html部分中,您必须包含两个图像标记,即。 chevron-up和chevron-down。
答案 4 :(得分:0)
使用jquery.js 1.10.2和bootstrap-collapse.js v2.3.0,这是对上述内容的重复。加载文档后,它会折叠除第一个项目之外的所有项目,然后处理后续的显示/隐藏事件。
$(document).ready(function () {
$(".accordion-body").on("shown", function (evt) {
setIcon(evt.target, true);
});
$(".accordion-body").on("hidden", function (evt) {
setIcon(evt.target, false);
});
$(".accordion-body").collapse("hide");
$("#collapse-faq-1").collapse("show");
});
function setIcon(acdBody, isShown) {
var indicator = "indicator" + acdBody.id.substr(acdBody.id.lastIndexOf("-"));
if (!isShown) {
$("#" + indicator).removeClass("icon-chevron-up").addClass("icon-chevron-down");
} else {
$("#" + indicator).removeClass("icon-chevron-down").addClass("icon-chevron-up");
}
}
HTML:
<div class="accordion" id="accordion">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapse-faq-1">
<i id="indicator-1" class="icon-chevron-down"></i>
FAQ Item 1
</a>
</div>
<div id="collapse-faq-1" class="accordion-body collapse in">
<div class="accordion-inner">
Answer 1 ...
</div>
</div>
</div>
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapse-faq-2">
<i id="indicator-2" class="icon-chevron-down"></i>
FAQ Item 2
</a>
</div>
<div id="collapse-faq-2" class="accordion-body collapse in">
<div class="accordion-inner">
Answer 2 ...
</div>
</div>
</div>
</div>