jQuery Accordion设置有效

时间:2009-09-10 23:33:14

标签: jquery jquery-ui

我在ASP:Net MVC应用程序的页面中有一个jQuery手风琴,我想在运行时设置活动手风琴。

我的代码如下:

<script type="text/javascript">
    $(document).ready(function() {
        var accordionindex = $("#UIPViewModel_ActiveAccordion").val();
        alert("Setting active index to " + accordionindex);
        $("#accordion").accordion('activate', accordionindex );
    });
</script>

您将看到最后一行设置活动手风琴。 当我使用此代码时,它总是表现得像我使用了active:false和所有手风琴都已关闭,即使警报显示正确的运行时值。

我也尝试过使用以下相同的内容:

$(“#accordion”)。accordion('activate',$(“#UIPViewModel_ActiveAccordion”)。val());

当我将最后一行更改为:

$(“#accordion”)。accordion('activate',2); (即硬编码)。它总是正常工作!

任何人都可以看到错误吗? 我在哪里弄错了?

3 个答案:

答案 0 :(得分:9)

val()返回的变量是一个字符串,手风琴期待一个数字。尝试:

    var accordionindex = $("#UIPViewModel_ActiveAccordion").val();
    accordionindex = parseInt(accordionindex, 10);  // convert a string to a number
    alert("Setting active index to " + accordionindex);
    $("#accordion").accordion('activate', accordionindex );

答案 1 :(得分:6)

只是为了扩展Ken的解决方案:

<script type="text/javascript"> 
$(function () {
    var accordionindex = Number($("#UIPViewModel_ActiveAccordion").val());
    alert("Setting active index to " + accordionindex);
    $("#accordion").accordion('activate', accordionindex );
});
</script>

如果val()有可能不是普通数字(例如,如果它的值为“index 4”),那么你真的只需要使用parseInt。并且您可以在设置var时将其强制转换为数字。

答案 2 :(得分:2)

对于较新版本,激活(和停用)面板的方式已更改:

jQuery(".selector").accordion("option", {active: index});

我花了一段时间才发现我并不疯狂 - jQueryUI 1.8支持activate方法。他们以1.9及以上的价格摆脱了它。