代码之家  ›  专栏  ›  技术社区  ›  Brent Ozar

异步加载时,jQuery livesearch不工作

  •  0
  • Brent Ozar  · 技术社区  · 5 年前

    我有一个livesearch,它使用一个无序列表,比如:

    <input id="search"/>
    <ul id="list>
      <li>1</li>
      <li>2</li>
    </ul>
    

    现在,我将liveSearch功能放在以下项目上:

    $('#search').liveUpdate('#list').focus();
    

    一开始我用静态列表进行测试,效果很不错。 现在我尝试用以下语句异步加载它:

    //$('#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);
    

    仍然没有找到解决方案。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Nick Craver    14 年前

    这个插件实际上有一个 <li> 要替换的元素,因此需要“解除绑定”前一个处理程序并重新绑定它,如下所示:

    $('#list').load('/search/accountname', function() {
      $('#search').unbind('keyup').liveUpdate('#list');
    });
    

    the plugin .keyup() 真正地 清理一下,你可以加一个 .parents('form').unbind('submit') 但如果你有 其他 在上提交处理程序 <form> ,那是个坏主意:)