使用jquery ajax调用加载大型div内容。 div中加载的手风琴无效

时间:2011-09-17 18:01:26

标签: jquery ajax jquery-ui accordion

我在每个部分内部都有一个手风琴(一次只显示一个部分)。所有手风琴都有不同的ID,没有一个正在工作。

$("#accordion1").accordion({
header: "h4", active: false, collapsible: true 
});

$("#accordion2").accordion({
header: "h4", active: false, collapsible: true 
});

2 个答案:

答案 0 :(得分:0)

当您的内容通过AJAX加载时,您应确保执行JavaScript。

建议将您的函数包装在着名的$(document).ready()函数中:

$(function(){
    $('#accordion1').accordion({});
});

$(function(){
    $('#accordion2').accordion({});
});

答案 1 :(得分:0)

根据你的描述,我猜你正在做这样的事情:

$("#accordion1").accordion({
    header: "h4", active: false, collapsible: true 
});
$("#accordion2").accordion({
    header: "h4", active: false, collapsible: true 
});

// And later on...
$('#section').load('/gimme/accordion1');

您从/gimme/accordion1加载的内容包含#accordion1。这不起作用,因为$('#accordion1')在调用DOM时会查看DOM,并且找不到#accordion1来绑定任何东西;稍后,当您将#accordion1加载到DOM中时,它不会绑定一个手风琴,因为$('#accordion1').accordion(/*...*/)调用是在#accordion1之前完成的。

当手风琴的HTML在DOM中时,你必须连接手风琴小部件。无论你用什么函数加载HTML都应该有一个回调函数,当加载HTML时调用它,这样你就可以使用它来连接你的小部件;例如,如果您使用load

$('#section').load('/gimme/accordion1', function() {
    $("#accordion1").accordion({
        header: "h4", active: false, collapsible: true 
    });
});