46

我正在使用 ajax 为我的注册提交表单,但在尝试设置工具提示以显示从控制器返回的错误的错误消息时遇到问题。

JavaScript:

$(document).on('ajax:success', '.user_modal_form', function(e, data, status, xhr) {
  var context;
  context = $(this);
  if (data.success) {
    $('button', context).hide();
    $('.spinner', context).show();
    location.reload();
  } else {
    if (data.errors != null) {
      $.each(data.errors, function(key, error) {
        var field;
        field = $("#athlete_" + key);
        field.attr('data-original-title', "" + key + " " + error).tooltip({
          trigger: 'manual'
        }).tooltip("show");
      });
    }
  }
});

错误信息:Uncaught Error: no such method 'show' for tooltip widget instance

4

4 回答 4

165

我有同样的错误,这是与 jQuery UI 的冲突。

如果您使用 jQuery UI,那么您需要重新排序脚本加载顺序。

我的工作负载顺序:

  • jQuery
  • jQuery 用户界面
  • 引导程序
于 2013-07-29T09:48:27.323 回答
5

这个和类似问题的根源

“工具提示小部件实例没有这种方法‘隐藏’”

JqueryUI 和 Boostrap 都有tooltip方法,

JqueryUI works like:

$el.tooltip("option","show");
$el.tooltip("option","hide");

Boostrap works like:

$el.tooltip("show");
$el.tooltip("hide");

So, as Bogdan Lewis showed you need to reorder your scripts, for example with requirejs, you need to make Boostrap be loaded after JqueryUI

var $ = require('jquery');
require('jquery_ui');
require('bootstrap');

and adjust config for requirejs like:

    bootstrap: {
        deps: ['jquery', 'jquery_ui']
    },
于 2016-03-04T11:21:39.937 回答
2

对我来说最简单的解决方案就是从我下载的 jQuery UI 发行版中删除工具提示组件。

于 2015-08-13T13:07:41.847 回答
1

Load order:

1. jQuery
2. jQuery UI
3. $.fn.uitooltip = $.fn.tooltip;
4. Bootstrap
5. $.fn.bttooltip = $.fn.tooltip;

or:

1. jQuery
2. Bootstrap
3. $.fn.bttooltip = $.fn.tooltip;
4. jQuery UI
5. $.fn.uitooltip = $.fn.tooltip;

=> Using:

1. $el.uitooltip //jQuery
2. $el.bttooltip //Bootstrap
于 2020-03-20T08:33:51.947 回答