我有一个搜索框,当我点击它时,我会初始化typeahead,来自服务器的一些数据。根据当前页面的不同,我需要在搜索下拉列表中显示/隐藏页脚。
根据我的需要,我采用了破坏先行者的方法,然后重新创建它。通过这种方式,我也可以刷新服务器上的数据,以防万一发生变化。
对于destroy我在函数顶部使用这个this.$("#searchQuery").typeahead('destroy');
,需要初始化typeahead,但问题是菜单没有被销毁。如果我看一下dom,就会创建4-5甚至更多的预先菜单。
所以我的问题是,如何才能正确'重新初始化'一个预先输入菜单?
我忘了提到我正在使用twitter typeahead
答案 0 :(得分:5)
您不需要通过此处显示的jQuery
引用this
this.$("#searchQuery")
你应该做的
$("#searchQuery").typeahead("destroy");
如果没有看到更多示例,我会说你的问题可能是因为你的函数中的this
被绑定到了一个与你期望的对象不同的对象。
请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
您的行已在您的功能中,因此您无法保证this
将Window
,并且在这种情况下您无需使用它。
如果这不是问题,那么请提供完整的html和javascript示例,最好是在JsFiddle上。