Jquery plugins 在live()中使用jQuery插件

Jquery plugins 在live()中使用jQuery插件,jquery-plugins,jquery,jquery-ui-accordion,Jquery Plugins,Jquery,Jquery Ui Accordion,我有一个使用jQuery load()函数动态加载内容的页面,因此我需要在此页面上的每个jQuery函数使用live()。但是,我无法让live()使用jQuery插件。例如,我想使用jQuery accordion: $("#accordion").accordion(); 但是我找不到正确的语法使accordion与live()一起工作。我试过: $("#accordion").live("load", accordion()); $("#accordion").live("load",

我有一个使用jQuery load()函数动态加载内容的页面,因此我需要在此页面上的每个jQuery函数使用live()。但是,我无法让live()使用jQuery插件。例如,我想使用jQuery accordion:

$("#accordion").accordion();
但是我找不到正确的语法使accordion与live()一起工作。我试过:

$("#accordion").live("load", accordion());
$("#accordion").live("load", $("#accordion").accordion());
$("#accordion").live("load", $(this).accordion());

我收到“b未定义”错误或“手风琴未定义”。

您必须使用匿名函数

$("#accordion").live('load',function(){
    $(this).accordion();
});
编辑:

如果第一次呈现手风琴时它已经在页面中,那么不应该使用live()调用它,而是通过页面加载来调用它

$(function(){
    $("#accordion").accordion();
});
我可以部分回答你的问题:

我建议改为使用livequery来执行此操作:

$("#accordion").livequery(
  function() { $(this).accordion(); }, 
  function() { $(this).accordion("destroy"); }
);

第一个函数将在添加到DOM中的任何$(“#accordion”)元素上初始化jQuery UI的accordion功能,第二个函数将在从DOM中删除该元素时销毁accordion对象。

谢谢!但我认为“加载”事件存在问题。当页面加载时,它不会显示手风琴。但当我将“加载”改为“单击”并单击div时,它会显示手风琴。你知道如何让手风琴通过live()显示在页面加载上吗?编辑我的答案,看一看。我也一样。“加载”不起作用,但“单击”起作用。还有其他提示吗?我需要在没有用户交互的情况下执行此操作。live()或on()函数不支持“加载”。