未捕获的错误:没有这样的方法'显示'工具提示小部件实例

den*_*icz 42 jquery twitter-bootstrap twitter-bootstrap-rails twitter-bootstrap-tooltip

我正在使用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");
      });
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

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

Bog*_*wis 145

我有同样的错误.

我与jQuery UI发生冲突.

如果您使用jQuery UI,则需要重新加载脚本加载顺序.

我的工作负荷顺序:

  • jQuery的
  • jQuery UI
  • Bootstap


pym*_*men 5

这个和类似问题的根源

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

JqueryUI 和 Boostrap 都有工具提示方法,

JqueryUI 的工作原理如下:

$el.tooltip("option","show");
$el.tooltip("option","hide");
Run Code Online (Sandbox Code Playgroud)

Boostrap 的工作原理如下:

$el.tooltip("show");
$el.tooltip("hide");
Run Code Online (Sandbox Code Playgroud)

因此,正如Bogdan Lewis所示,您需要重新排序脚本,例如使用requirejs,您需要在JqueryUI之后加载Boostrap

var $ = require('jquery');
require('jquery_ui');
require('bootstrap');
Run Code Online (Sandbox Code Playgroud)

并调整requirejs 的配置,例如:

    bootstrap: {
        deps: ['jquery', 'jquery_ui']
    },
Run Code Online (Sandbox Code Playgroud)