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 UI
  • ブートストラップ
于 2013-07-29T09:48:27.323 に答える
5

これと同様の問題の根本

「ツールチップ ウィジェット インスタンスの 'hide' メソッドはありません」

JqueryUI と Boostrap の両方にtooltipメソッドがあり、

JqueryUIは次のように機能します。

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

Boostrapは次のように機能します。

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

Bogdan Lewisが示したように、たとえば requirejs を使用してスクリプトを並べ替える必要がある場合は、JqueryUIの後にBoostrapをロードする必要があります

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

次のようにrequirejsの構成調整します。

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