缺乏脑力,似乎无法解决以下问题:
$('#accordion .title h4').click(function(){
if($('#accordion .title').attr('aria-selected')==='false') {
$('#accordion .title').attr('aria-selected' , 'true');
$('#accordion .title').attr('aria-expanded' , 'true');
$('#accordion .accordion-content').attr('aria-hidden' , 'false');
}
else{
$('#accordion .title').attr('aria-selected' , 'false');
$('#accordion .title').attr('aria-expanded' , 'false');
$('#accordion .accordion-content').attr('aria-hidden' , 'true');
}
$(this).parent().next().slideToggle(400).siblings('.accordion-
content').slideUp(400);
return false;
});
这里完全是:https://jsfiddle.net/77zqme17/
我试图为这个jQuery手风琴切换WAI-ARIA属性,但由于它是一个允许多个打开面板的手风琴,如果您两次单击同一个选择(注1),我的单击事件将正确触发,但如果您单击一个兄弟并仍然打开原始选择(注2),则不会正确触发。
注1:点击任务两次正确更改ARIA属性为aria选择="true"aria扩展"true"和aria隐藏="false"
注意2:当任务仍然打开时单击Vision会正确更改Vision的属性,但会将任务的类切换回aria选择="false"aria扩展"false"和aria隐藏="true",即使它仍然打开。
我试着用它变魔术,但可惜没有好结果,所以这是我最初的脚本片段。关于如何让这个该死的东西正常工作,有什么建议吗?
谢谢
您的#手风琴选择器。标题太笼统,它会选择您的所有标题。在click事件中使用此,意味着它将仅适用于正确的标题。
更新的JS:
$('#accordion .title h4').click(function(){
if($(this).closest('.title').attr('aria-selected')==='false') {
$(this).closest('.title').attr('aria-selected' , 'true');
$(this).closest('.title').attr('aria-expanded' , 'true');
$(this).closest('.accordion-content').attr('aria-hidden' , 'false');
}
else{
$(this).closest('.title').attr('aria-selected' , 'false');
$(this).closest('.title').attr('aria-expanded' , 'false');
$(this).closest('.accordion-content').attr('aria-hidden' , 'true');
}
$(this).parent().next().slideToggle(400).siblings('.accordion-content').slideUp(400);
return false;
});
JSFiddle:https://jsfiddle.net/77zqme17/2/
每次单击时,您都应该对该单击进行本地更改。使用this
仅更改所选手风琴的title
和content
的aria属性。
$('#accordion .title h4').click(function(){
var title = $(this).closest('.accordion-container').find('.title'),
content = $(this).closest('.accordion-container').find('.accordion-content');
if(title.attr('aria-selected')==='false') {
title.attr('aria-selected' , 'true');
title.attr('aria-expanded' , 'true');
content.attr('aria-hidden' , 'false');
}
else{
title.attr('aria-selected' , 'false');
title.attr('aria-expanded' , 'false');
content.attr('aria-hidden' , 'true');
}
$(this).parent().next().slideToggle(400).siblings('.accordion-content').slideUp(400);
return false;
});
$('#accordion .title h4').click(function() {
var title = $(this).closest('.accordion-container').find('.title'),
content = $(this).closest('.accordion-container').find('.accordion-content');
if (title.attr('aria-selected') === 'false') {
title.attr('aria-selected', 'true');
title.attr('aria-expanded', 'true');
content.attr('aria-hidden', 'false');
} else {
title.attr('aria-selected', 'false');
title.attr('aria-expanded', 'false');
content.attr('aria-hidden', 'true');
}
$(this).parent().next().slideToggle(400).siblings('.accordion-content').slideUp(400);
return false;
});
.accordion-content {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="accordion" role="tablist" aria-live="polite">
<div class="accordion-container">
<div class="title" id="tab0" tabindex="0" aria-controls="panel0" aria-selected="false" aria-expanded="false" role="tab">
<h4>Mission</h4>
</div>
<div class="accordion-content" id="panel0" aria-labelledby="tab0" aria-hidden="true" role="tabpanel">
<p>Test Test Test</p>
</div>
</div>
<div class="accordion-container">
<div class="title" id="tab1" tabindex="1" aria-controls="panel1" aria-selected="false" aria-expanded="false" role="tab">
<h4>Vision</h4>
</div>
<div class="accordion-content" id="panel1" aria-labelledby="tab1" aria-hidden="true" role="tabpanel">
<p>Test Test</p>
</div>
</div>
<div class="accordion-container">
<div class="title" id="tab2" tabindex="2" aria-controls="panel2" aria-selected="false" aria-expanded="false" role="tab">
<h4>Values</h4>
</div>
<div class="accordion-content" id="panel2" aria-labelledby="tab2" aria-hidden="true" role="tabpanel">
<p>
Test
</p>
</div>
</div>
</div>
手风琴效果其实就是通过JS改变元素的height,然后加上transition来让css动起来。 准备HTML结构 这里我们使用 dl , 因为 dt 刚好可以模拟标题, dd 模拟内容。 <div class="panel"> <dl> <dt>One Item</dt> <dd>One Item Content .</dd>
我正在使用jQuery手风琴来隐藏一些数据。 accordion标题是一个带有一些标题的表格。有一个标题,我不希望你点击它,因为手风琴事件会触发。 所以 手风琴是可折叠的,如果您单击Test2(类nofunction),手风琴事件不应触发。但是如果您单击Test或其他表头,手风琴应该会触发事件。 我可以添加这个功能吗? 更新测试http://jsfiddle.net/e3Q8d/,包括jQuery
jQueryUI中的Accordion Widget是一个基于jQuery的可扩展和可折叠内容持有者,它被分成几个部分,可能看起来像标签。 jQueryUI提供了accordion()方法来实现这一点。 语法 (Syntax) accordion()方法可以使用两种形式 - $(selector,context).accordion(options)方法 $(selector, context).
描述 (Description) 手风琴是一个图形控制元素,显示为堆叠的项目列表。 每个手风琴都可以expanded或stretched以显示与手风琴相关的内容。 可折叠布局 当您使用单个单独的可折叠元素时,您需要省略accordion-list包装元素。 以下是可折叠布局的结构 - <!-- Single collapsible element ------> <div class = "acc
问题内容: 我正在使用jQuery手风琴插件来制作一些数据的手风琴。然后,我希望用户能够向手风琴添加更多数据。我已经将手风琴设置为可以正常运行,然后创建了一个函数,该函数为与手风琴语义匹配的手风琴添加了“列表项”。 是否可以“更新”手风琴,使其与新添加的元素一起工作,而无需将新数据保存到数据库并刷新页面? 像这样: 还是像jQuery 1.3中添加的live事件之类的东西,有人知道吗? 问题答案:
在垂直导航中,如果存在多个分级,常常使用手风琴导航,它会以手风琴方式展开和折叠,来节约空间。 简单的说,手风琴导航就是垂直导航的层层嵌套,需要多少级,就嵌套多少层。这里就以两级导航为例,来介绍手风琴导航的基本制作方法。 为了方便控制手风琴导航的样式和行为,外层导航使用定义列表 dl、而内层使用无序列表 ul 来包裹导航中的链接元素: <dl class="accordion"> <dt>