异步加载时jQuery livesearch不工作

异步加载时jQuery livesearch不工作,jquery,livesearch,Jquery,Livesearch,我有一个livesearch,它使用无序列表,如下所示: <input id="search"/> <ul id="list> <li>1</li> <li>2</li> </ul> $('#list').load('/search/accountname', function() { $('#search').unbind('keyup').liveUpdate('#list'); }); 起初

我有一个livesearch,它使用无序列表,如下所示:

<input id="search"/>
<ul id="list>
  <li>1</li>
  <li>2</li>
</ul>
$('#list').load('/search/accountname', function() {
  $('#search').unbind('keyup').liveUpdate('#list');
});
起初我用一个静态列表进行测试,它工作得很好。 现在,我尝试使用以下语句异步加载它:

//$('#list').load('/search/organization');
//$('#list').load('/search/person');
//$('#list').load('/search/debitor');
$('#list').load('/search/accountname');
数据按正常方式加载,但现在搜索不再工作。我不太习惯使用ajax,所以这可能是一个常见的问题

提前感谢,

编辑:

当我添加这行代码,或在其他地方向它发出警报时,它返回1。ul中始终只有一个元素

$('#list').load('/search/organization');
var test = jQuery('#list');
alert(test.length);

仍然没有找到解决方案。

插件实际上有一个正在被替换的
  • 元素的缓存,因此您需要“解除”前处理程序的绑定并重新绑定它,如下所示:

    <input id="search"/>
    <ul id="list>
      <li>1</li>
      <li>2</li>
    </ul>
    
    $('#list').load('/search/accountname', function() {
      $('#search').unbind('keyup').liveUpdate('#list');
    });
    

    由于是装配到处理程序的,您只需解除绑定并添加一个新的。要真正清理,您可以添加一个
    .parents('form').unbind('submit')
    ,但是如果您在
    上有任何其他提交处理程序,那将是一个坏主意:)

    谢谢,但我得到的liveUpdate不是一个函数错误。变体也不起作用。@baklap-您是碰巧在页面中还是在加载的页面中再次包含jQuery?当它发生时,所有的插件都会被清除。@NickCraver-No我把它放在.js加载队列的末尾。我必须添加:$('search').liveUpdate('list').focus();在最后重新绑定它,不是吗?但是仍然不起作用。@baklap-不……如果你得到的
    不是一个函数
    ,那么插件就会被删除……如果你有一个链接,我可以快速查看一下。我想要,但它在开发服务器上本地运行。可能是因为liveUpdate是在加载之后绑定的。让我看看。编辑:nup,仍然是相同的错误