我有一个搜索框,当我点击它时,我会在上面初始化预先输入,以获取来自服务器的一些数据。根据当前页面,我需要在搜索下拉列表中显示/隐藏页脚。
根据我的需要,我采用了销毁 typeahead 然后重新创建它的方法。这样,我还从服务器刷新数据,以防发生变化。
为了销毁,我在需要初始化预输入的函数顶部使用了这个 this.$("#searchQuery").typeahead('destroy');
,但问题是菜单没有被破坏。如果我查看 dom,会创建 4-5 个甚至更多的预输入菜单。
所以我的问题是,我怎样才能正确地“重新初始化”预输入菜单?
我忘了说我正在使用 twitter typeahead
最佳答案
你不需要像你在这里展示的那样通过this
引用jQuery
this.$("#searchQuery")
你应该这样做
$("#searchQuery").typeahead("destroy");
在没有看到更多示例的情况下,我会说您的问题可能是因为函数中的 this
绑定(bind)到与您期望的对象不同的对象。
参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
你的行在你的函数中,所以你不能保证 this
会是 Window
并且在这种情况下你不需要使用它。
如果这不是问题,请提供完整的 html 和 javascript 示例,最好是在 JsFiddle 上。
关于javascript - 在菜单关闭后销毁 typeahead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18887544/