jQuery UI Accordion激活

时间:2009-12-14 06:47:40

标签: jquery accordion jquery-ui-accordion

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

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

这样的东西吗?
$('#accordion').activate('activate','#item117');

甚至

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

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


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

13 个答案:

答案 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');