我有一个使用jQuery load()函数动态加载内容的页面,因此我需要在此页面上为每个jQuery函数使用live()。但是,我无法使用live()来使用jQuery插件。例如,我想使用jQuery手风琴:
$("#accordion").accordion();
但我找不到合适的语法让手风琴与live()一起使用。我试过了:
$("#accordion").live("load", accordion());
$("#accordion").live("load", $("#accordion").accordion());
$("#accordion").live("load", $(this).accordion());
我收到“b未定义”错误,或“手风琴未定义。”
答案 0 :(得分:6)
您必须使用匿名功能
$("#accordion").live('load',function(){
$(this).accordion();
});
修改强>
如果首次渲染时手风琴已经在页面中,那么你不应该使用live()来调用它,而应该通过页面加载来调用
$(function(){
$("#accordion").accordion();
});
答案 1 :(得分:2)
This可以部分回答您的问题:
我建议使用livequery来执行此操作:
$("#accordion").livequery(
function() { $(this).accordion(); },
function() { $(this).accordion("destroy"); }
);
第一个函数将在添加到DOM的任何$(“#accordion”)元素上初始化jQuery UI的手风琴功能,第二个函数将在从DOM中删除相同元素时销毁accordion对象。