使用带有live()的jQuery插件

时间:2011-04-23 18:32:24

标签: jquery-plugins jquery jquery-ui-accordion

我有一个使用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未定义”错误,或“手风琴未定义。”

2 个答案:

答案 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对象。