0

我有一个搜索框,当我点击它时,我会在其上初始化输入,以获取来自服务器的一些数据。根据当前页面,我需要在搜索下拉列表中显示/隐藏页脚。

根据我的需要,我采用了销毁预输入然后重新创建它的方法。这样,我也刷新了服务器的数据,以防有什么变化。

对于销毁,我this.$("#searchQuery").typeahead('destroy');在需要初始化预输入的函数顶部使用它,但问题是菜单没有被销毁。如果我查看 dom,则创建了 4-5 个甚至更多的 typeahead 菜单。

所以我的问题是,我怎样才能正确地“重新初始化”一个预先输入的菜单?

我忘了提到我正在使用twitter typeahead

4

1 回答 1

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 上。

于 2013-10-08T14:13:18.040 回答