jQuery Accordion设置有效

Red*_*ed1 5 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>
Run Code Online (Sandbox Code Playgroud)

您将看到最后一行设置活动手风琴.当我使用这段代码时,它总是像我使用了active:false一样,即使警报显示正确的运行时值,所有的手风琴都会关闭.

我也试过简单地使用以下相同的东西:

$("#accordion").accordion('activate',$("#UIPViewModel_ActiveAccordion").val());

当我将最后一行更改为:

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

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

Ken*_*ing 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 );
Run Code Online (Sandbox Code Playgroud)


Ant*_*ony 6

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

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

你真的只需要使用parseInt,如果val()有可能是普通数字以外的东西(比如它的值为"index 4").您可以在设置var时将其强制转换为数字.

  • 当值从DOM中出来时,它们总是字符串.即使你将它们转换为整数或浮点数,然后从js中将它们注入到DOM中.我学到了很难的方法. (2认同)