我在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&quot;)。accordion('activate',$(&#;#UIPViewModel_ActiveAccordion&quot;)。val());

当我将最后一行更改为:

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

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

有帮助吗?

解决方案

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

其他提示

只是为了扩展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时将其强制转换为数字。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top