【问题标题】:Uncaught Error: cannot call methods on button prior to initialization; attempted to call method 'loading' [closed]未捕获的错误:无法在初始化之前调用按钮上的方法;试图调用方法“加载”[关闭]
【发布时间】:2015-05-12 12:08:47
【问题描述】:

在我将 jquery-ui 放在第一行文件中,然后是引导文件后,我仍然收到此错误:

未捕获的错误:在初始化之前无法调用按钮上的方法;试图调用方法“加载”。

谁能帮忙?

【问题讨论】:

  • 请将您的代码添加到问题中,尽管该错误是不言自明的。
  • 我们可以看看一些代码吗????
  • 尝试先实现jQuery,然后是jQueryUI,然后是bootstrap ????

标签: javascript jquery twitter-bootstrap jquery-ui


【解决方案1】:

这是由 jquery-ui 和 bootstrap-button 插件冲突引起的。在 事实上 jquery-ui 代码 js 代码应该放在 bootstrap.js 之前,那 解决问题。

只需将 jquery-ui 插件放在 bootstrap.js 之前

【讨论】:

【解决方案2】:

另一种解决方案是在引导后添加这一行:

$.fn.btnBootstrap = $.fn.button.noConflict();

然后在调用加载和重置时:

$btn.btnBootstrap('loading');
$btn.btnBootstrap('reset');

【讨论】:

【解决方案3】:

这个答案基本上与建议的其他一些答案一致:最后加载引导程序。这个答案只是增加了更多信息。

我在使用 Bootstrap 2.3.2 和 jQuery UI 1.10 时看到了这一点。正如bootstrap bug #6094 中所述,他们都想实现:

jQuery(selector).button()

所以最后加载的那个“获胜”。

特别是,如果最后加载 jQueryUI,那么这个标准的 bootstrap 2.3.2 按钮组标记不起作用:

<div class="btn-group" data-toggle="buttons-checkbox">
  <button type="button" class="cm-toggle-btn toggles btn btn-mini active" name="foo">
    Foo
  </button>
  <button type="button" class="cm-toggle-btn toggles btn btn-mini active" name="bar">
    Bar
  </button>
</div>

(它会创建一个如下所示的按钮组:)

当您单击按钮组中的某个按钮时,会调用 jQueryUI 的 .button() 并生成 Error: cannot call methods on button prior to initialization; attempted to call method 'toggle' 错误。

可以更改顺序并最后加载引导程序,但随后 jQuery UI 的$().button()(以及因此.slider().dialog())停止工作。 :-(

因为,唉,我们都需要同时工作,所以我们这样做了:由于其他原因,我们首先加载 jQueryUI 很复杂,所以围绕 jQueryUI,我们放了:

<script>
    let bootstrapButton = jQuery.fn.button;
</script>

<script src="jqueryUIsource.js"></script>

<script>
    jQuery.fn.jQueryUIButton = jQuery.fn.button;
    jQuery.fn.button = bootstrapButton;
</script>

然后,在需要 jQueryUI 引导的页面部分中,暂时将 jQueryUI 的 .button() 实现(存储在 jQuery.fn.jQueryUIButton)重新设置为 jQuery.fn.button。这是一个凌乱的黑客,但有点工作。如果我们想在同一页面上加载两者,我认为我们不能做得更好。

这个codepen 证明它可以被使用。

【讨论】:

    【解决方案4】:

    我不知道这个消息是在什么情况下出现的。我使用这段代码时也遇到过类似的情况:

    HTML:

    <button class="btn btn-primary" type="submit" id="update" data-loading-text="Processing <i class='fa fa-spinner fa-spin'></i>">Przelicz <span class="glyphicon glyphicon-play-circle"></span></button>
    

    JAVASCRIPT:

    $('body').on('click', '#update', function(e) {
    var $this = $(this);
    $this.button('loading');
    setTimeout(function() {
        $this.button('reset');
    }, 8000);
    }
    

    我以不同的方式解决了这个问题:

    JAVASCRIPT:

    $('body').on('click', '#update', function(e) {
    var html = $(this).data('loading-text');
    $(this).html(html);
    }
    

    我认为,如果它不能 100% 解决您的问题,它可能有助于以另一种方式解决它。

    【讨论】:

    • 这是我收到的错误消息:未捕获的错误:在初始化之前无法调用按钮上的方法;试图调用方法“加载”
    【解决方案5】:

    我正在使用一个引导主题,它不允许我重新调整 bootstrap.js 和 jquery-ui.js... 不过我想通了,我的问题是我有一个 buttonset() 和两个包含的 div单选按钮和单选按钮具有相同的名称!我从按钮集 div 中删除了名称,它可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 2017-10-25
      相关资源
      最近更新 更多