我在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); (即硬编码)。它总是正常工作!
任何人都可以看到错误吗? 我在哪里弄错了?
答案 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及以上的价格摆脱了它。