jQuery UI Accordion激活

我没有得到如何做到这一点,或者如果我能做到这一点。 我有一个jQuery UI Accordion,多个部分,每个部分包含多个锚标记,每个锚标记都有一个唯一的字符串id。

我希望能够将手风琴打开到具有给定id的特定元素的位置。 比如说id“item117”。 我可以使用类似的东西吗?

$('#accordion').activate('activate','#item117'); 

甚至

 $('#accordion').activate('activate',117); 

我已经尝试了这些和一些变化,但无法让它去。 在我试图开始工作的情况下,手风琴应该打开到第二部分的末尾。


我还没有得到这个,所以也许我也做了别的错事。 我已将其删除到示例页面: http : //www.ofthejungle.com/testaccordion.php请查看它及其来源。

已经过了这个并找到了很好的通用解决方案
模拟按其ID 单击所需项目的标题

 $('#header-of-item-258').click(); 

随时随地工作,而不仅仅是手风琴

从文档:

 // getter var active = $( ".selector" ).accordion( "option", "active" ); // setter $( ".selector" ).accordion( "option", "active", 2 ); 

对我来说工作

 $("#accordion").accordion({active:"h3:last"}) 

这最终对我有用:

 $("#accordion").accordion("activate", $("#h3-id")); 

注意!!! id必须是您要打开的

元素的id(在默认的折叠设置中)。

您需要使用名为accordion的函数调用它:

 // Open the third set (zero based index) $('#accordion').accordion('activate', 2); 

要打开包含特定元素的部分,您可以执行以下操作。 注意:您需要定位通常打开和关闭该部分的触发器。 在docs中,这是一个h3元素,你的触发元素可能不同,所以相应地改变它。

 $('#accordion').accordion('activate', '#accordion > div:has(#item117) > h3'); 

用#id激活手风琴我遇到了同样的问题。 可悲的是,我没有找到办法,所以我创造了一个黑客。 我在手风琴中迭代div元素,以获得有趣div的索引。 它看起来像这样:

 acc = 'tab-you-are-interested-in'; // find corresponding accordion act = 0; panels = $('#accordion-element > div'); for (i=0; i 

当你点击标题时,它是h3元素,它打开下一个div ..这是function。 现在,对于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是全局的

使用jQuery 1.9+:

 $('#accordion').activate('activate', elementSelector); 

就是现在:

 $('#accordion').activate('option', 'active', elementSelector); 

如果您发现使用遍历方法更容易,如果您有这样的HTML:

  

试试这个:

 var myh3 = $('#item117').parent().prev('h3'); $('#accordion').accordion('option', 'active', myh3); 

你也可以这样启用和禁用手风琴:

 // 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"); 

这是另一种方式。

在手风琴的每个H3标头标签中包含ID =“someId”,并将该ID命名为唯一。

例如,这个id将是’AccjA’系列,下一个h4将是’AccjB’:

 

A Fan?

然后激活您想要的任何面板:

  $('#Accjoin').accordion('activate', '#AccjoinA') 

使用Ben Alman的“.doTimeout”函数,我在超时时使用了上面的内容,以便在页面加载2秒延迟后引起用户注意:

 $.doTimeout(2000, function () { $('#Accjoin').accordion('activate', '#AccjoinA') }); 

尝试

 $('#accordion').activate('#item117'); 

要么

 $('#accordion').activate(document.getElementById('item117')); 

激活手风琴的正确语法是

 $(".selector").activate(var index) 

其中index是String,Element,boolean,Number,JQuery

什么是jquery API

激活手风琴中包含的第二个内容。

 $(".selector").activate(1) 

关闭手风琴的所有内容部分。

 $(".selector").activate(false) 

激活与给定表达式匹配的第一个元素。

 $(".selector").activate("a:first") 
 $('#collapseOne').collapse('toggle');