【问题标题】:Why is .active() not working with typehead为什么 .active() 不能与 typeahead 一起使用
【发布时间】:2014-06-19 09:36:46
【问题描述】:

我们正在使用 typehead 进行引导 2.3 的自动完成,bootstrap-typeahead.js。虽然 typeahead 是一个 jQuery 插件,但 jQuery.active 始终是 0,即使它试图从服务器获取建议。

jQuery.active 是否仅适用于 jQuery ajax 请求?如果我使用任何插件而不是 jQuery.ajax 从服务器获取信息,是否有任何替代 jQuery.active 的方法。

【问题讨论】:

  • 你能为此做一个小提琴吗?
  • 。只有在调用 jquery.ajaxstart 方法时才更新活动,因此如果您不使用 jquery 的 ajax 方法,活动将不会更新。

标签: javascript jquery twitter-bootstrap autocomplete typeahead


【解决方案1】:

这是未经测试的,但从 github 上的代码看来,这是负责检索和返回数据的函数。它位于插件的 dropdown.js 文件中。

getDatumForSuggestion: function getDatumForSuggestion($el) {
      var datum = null;

      if ($el.length) {
        datum = {
          raw: Dataset.extractDatum($el),
          value: Dataset.extractValue($el),
          datasetName: Dataset.extractDatasetName($el)
        };
      }

      return datum;
    }

如果是这种情况,您可能可以利用 jquery 的 .active 方法来获取数据何时被提取以及何时通过修改此函数返回数据,

getDatumForSuggestion: function getDatumForSuggestion($el) {
      var datum = null;

      $.active++ 

      if ($el.length) {
        datum = {
          raw: Dataset.extractDatum($el),
          value: Dataset.extractValue($el),
          datasetName: Dataset.extractDatasetName($el)
        };
      }

      $.active--
      return datum;
    }

就个人而言,我不建议使用 $.active 而是为此特定目的创建自己的全局变量。原因是你不能总是确定,特别是如果你使用 jquery 插件,当你实际上正在调用一个 jQuery.ajax 方法并且 active 将在那个时候更新,可能没有给你你正在寻找的东西,除非您想查看与此插件一起与服务器的其他连接,在这种情况下使用$.active

【讨论】:

  • 这很好,但有什么通用的方法可以找出所有未决的连接。 document.readyState 也在工作,它写在一些答案中,以告知浏览器的待处理状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2021-06-14
  • 2012-10-09
  • 2020-03-18
  • 2017-11-21
  • 2019-04-11
相关资源
最近更新 更多