我在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); (即硬编码).它总是正常工作!
任何人都可以看到错误吗?我在哪里弄错了?
返回的变量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)
只是为了扩展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时将其强制转换为数字.