我没有得到如何做到这一点,或者如果我能做到这一点。我有一个jQuery UI Accordion,多个部分,每个部分包含多个锚标记,每个锚标记都有一个唯一的字符串id。
我希望能够将手风琴打开到具有给定id的特定元素的位置。比如说id“item117”。我可以使用像
这样的东西吗?$('#accordion').activate('activate','#item117');
甚至
$('#accordion').activate('activate',117);
我已经尝试了这些和一些变化,但无法让它去。在我试图开始工作的情况下,手风琴应该打开到第二部分的末尾。
我仍然没有得到这个,所以也许我也做了别的错事。我已将其删除到示例页面:http://www.ofthejungle.com/testaccordion.php请查看它及其来源。
答案 0 :(得分:12)
已经过了这个&找到了很好的通用解决方案
- 模拟点击所需项目的标题
$('#header-of-item-258').click();
随时随地工作,而不仅仅是手风琴
答案 1 :(得分:12)
来自文档:
// getter
var active = $( ".selector" ).accordion( "option", "active" );
// setter
$( ".selector" ).accordion( "option", "active", 2 );
答案 2 :(得分:10)
为我工作
$("#accordion").accordion({active:"h3:last"})
答案 3 :(得分:9)
这最终对我有用:
$("#accordion").accordion("activate", $("#h3-id"));
请注意!!! id必须是< h3>的id。要打开的元素(在默认的手风琴设置中)。
答案 4 :(得分:8)
您需要使用名为accordion
的函数调用它:
// Open the third set (zero based index)
$('#accordion').accordion('activate', 2);
要打开包含特定元素的部分,您可以执行以下操作。 注意:您需要定位通常打开和关闭该部分的触发器。在文档中,这是一个h3
元素,您的触发元素可能不同,因此请相应更改。
$('#accordion').accordion('activate', '#accordion > div:has(#item117) > h3');
答案 5 :(得分:3)
我在使用#id激活手风琴时遇到了同样的问题。可悲的是,我没有找到办法,所以我创造了一个黑客。我在手风琴中迭代div
个元素,以获得有趣的div
索引。它看起来像这样:
acc = 'tab-you-are-interested-in';
// find corresponding accordion
act = 0;
panels = $('#accordion-element > div');
for (i=0; i<panels.length; i++) {
if ( panels[i].id == acc ) {
act = i;
}
}
$('#accordion-element').accordion('activate', act);
答案 6 :(得分:2)
当你点击标题时,它是h3元素,它会打开下一个div ..这就是功能。现在,对于activate,您需要提供索引或元素。 index可能与您的id不同。所以我会用:
$('.selector').accordion('option', 'activate', $(h3#id));
如果你有索引,你可以使用它。但是大多数情况下,如果你动态创建了accordion,那么获取id的索引并不容易。你可以找到像这样的指数..
var processingHeaders = $('#accordion h3');
for (i = 0; i < processingHeaders.length; i++) {
ids.push($(processingHeaders[i]).attr('id'));
idsForLaterChecks.push($(processingHeaders[i]).attr('id'));
}
现在我有了ids .. 使用indexOf:在数组中找到索引并使用它..
注意:// idsForLaterChecks是全局的
答案 7 :(得分:1)
使用jQuery 1.9+:
$('#accordion').activate('activate', elementSelector);
现在是:
$('#accordion').activate('option', 'active', elementSelector);
如果你发现使用遍历方法更容易,如果你有这样的HTML:
<div id="accordion">
<h3><a href="#">Section</a></h3>
<div>
<p id="#item117" class="item">
<a class="link-active" href="">Item 117</a>
</p>
</div>
</div>
试试这个:
var myh3 = $('#item117').parent().prev('h3');
$('#accordion').accordion('option', 'active', myh3);
答案 8 :(得分:0)
尝试
$('#accordion').activate('#item117');
或
$('#accordion').activate(document.getElementById('item117'));
激活手风琴的正确语法是
$(".selector").activate(var index)
其中index是String,Element,boolean,Number,JQuery
答案 9 :(得分:0)
你也可以这样启用和禁用手风琴:
// Add the class ui-state-disabled to the headers that you want disabled
$( ".whatyouwantdisabled" ).addClass("ui-state-disabled");
要重新激活标签:
// Remove the class ui-state-disabled to the headers that you want to enable
$( ".whatyouwantenabled" ).removeClass("ui-state-disabled");
答案 10 :(得分:0)
这是另一种方式。
在手风琴的每个H3标头标签中加入一个ID =“someId”,并将该ID命名为唯一。
例如,这个id将是'AccjA'系列,下一个h4将是'AccjB':
<h4 class="Accj" id="AccjA">
<a href="#settings">A Fan?</a>
</h4>
然后激活您想要的任何面板:
$('#Accjoin').accordion('activate', '#AccjoinA')
我使用Ben Alman的“.doTimeout”函数,在页面加载延迟2秒后,在超时时使用上述内容来吸引用户的注意力,如:
$.doTimeout(2000, function () {
$('#Accjoin').accordion('activate', '#AccjoinA')
});
答案 11 :(得分:-1)
jquery API
激活手风琴中包含的第二个内容。
$(".selector").activate(1)
关闭手风琴的所有内容部分。
$(".selector").activate(false)
激活与给定表达式匹配的第一个元素。
$(".selector").activate("a:first")
答案 12 :(得分:-2)
$('#collapseOne').collapse('toggle');