【发布时间】:2014-02-06 03:10:25
【问题描述】:
当用户单击按钮时,我试图将项目动态附加到嵌套手风琴。我正在使用以下代码创建嵌套手风琴:
$(".accordion").accordion({
collapsible: true,
autoHeight: false,
animated: 'swing',
heightStyle: "content",
changestart: function(event, ui) {
child.accordion("activate", false);
}
});
var child = $(".child-accordion").accordion({
active:false,
collapsible: true,
autoHeight: false,
animated: 'swing'
});
为了做到这一点,我发现我需要使用以下方法刷新手风琴:
$('.accordion').accordion("refresh");
我的问题是,当我尝试使用以下方法刷新内部手风琴时:
$('.child-accordion').accordion("refresh");
我得到以下信息: 错误:无法在初始化之前调用手风琴上的方法;试图调用方法“刷新”
当我检查应该刷新的 div 时,它具有以下 ids/classes:
DIV#shelf0sections.child-accordion.ui-accordion-content.ui-helper-reset.ui-...
我尝试使用选择器:
$('#shelf0sections .child-accordion').accordion("refresh");
相反,它不会给出错误,但视觉上没有任何反应。
jsFiddle:http://jsfiddle.net/Mw9SA/3/ (请注意,列表中的第一个元素只是查看嵌套手风琴工作的示例,如果您尝试向其中添加部分,它将不起作用。使用“+Shelf”按钮,然后打开新的手风琴并使用“+部分”按钮。)
【问题讨论】:
-
嘿@b-en,您在代码中的哪个位置尝试调用
$('.child-accordion').accordion("refresh");也许快速检查一下refresh调用是否在var child = $(".child-accordion").accordion({...});位之前进行?跨度> -
嗨@Varinder,我确信该元素在我尝试刷新它之前就已经存在。例如,如果我在创建元素后输入控制台,我仍然会进入 $('.child-accordion').accordion("refresh"); 20:23:01.853 错误:无法在初始化之前调用手风琴上的方法;试图调用方法“刷新”而如果我调用以下方法,它可以正常工作:20:23:06.048 $('.child-accordion').fadeOut("slow");
-
是否可以在jsfiddle.net 发一个快速的小提琴?
-
这里:jsfiddle.net/Mw9SA/3,感谢您的浏览。
-
另请注意,列表中的第一个元素只是查看嵌套手风琴工作的示例,如果您尝试向其中添加部分,它将无法正常工作。
标签: javascript jquery jquery-ui jquery-ui-accordion