Bootstrap模态:不是一个函数

god*_*per 91 html javascript jquery bootstrap-modal

我的页面中有一个模态.当我在Windows加载时尝试调用它时,它会向控制台输出一条错误:

$(...).modal is not a function
Run Code Online (Sandbox Code Playgroud)

这是我的模态HTML:

<div class="modal fade" id="prizePopup" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                &times;
            </button>
            <h4 class="modal-title" id="myModalLabel">
                This Modal title
            </h4>
        </div>
        <div class="modal-body">
            Add some text here
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary">
                Submit changes
            </button>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

<script type="text/javascript" src="js/bootstrap.js"></script>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

这是我在加载窗口时运行它的JavaScript:

<script type="text/javascript">
$(window).load(function() {
    $('#prizePopup').modal('show');
});
</script>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Ion*_*zău 135

脚本顺序存在问题.按此顺序加载它们:

<!-- jQuery -->
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<!-- BS JavaScript -->
<script type="text/javascript" src="js/bootstrap.js"></script>
<!-- Have fun using Bootstrap JS -->
<script type="text/javascript">
$(window).load(function() {
    $('#prizePopup').modal('show');
});
</script>
Run Code Online (Sandbox Code Playgroud)

为什么这个?因为Bootstrap JS依赖于jQuery:

插件依赖项

一些插件和CSS组件依赖于其他插件.如果单独包含插件,请确保在文档中检查这些依赖项.另请注意,所有插件都依赖于jQuery(这意味着必须在插件文件之前包含jQuery).

  • 哈哈哈,菜鸟的错误.谢谢你的信息 (4认同)
  • 当我尝试使用Google开发工具运行模式时,我仍然遇到此问题。 (2认同)

Nur*_*urp 63

如果在代码中多次声明jQuery,也可能会显示此警告.第二个jQuery声明阻止bootstrap.js正常工作.

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
...
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
Run Code Online (Sandbox Code Playgroud)


小智 14

问题是由于jQuery实例不止一次.如果您使用多个jQuery实例的文件,请注意.只留下1个jQuery实例,你的代码就可以了.

<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
Run Code Online (Sandbox Code Playgroud)


das*_*jad 13

jQuery应该是第一个:

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
Run Code Online (Sandbox Code Playgroud)


Vit*_*des 9

更改脚本的顺序

因为bootstrap是一个jquery插件所以它需要Jquery来执行


小智 8

努力解决这个问题,检查了加载顺序,以及 jQuery 是否通过捆绑包含了两次,但这似乎不是原因。

最后通过进行以下更改修复了它:

(前):

$('#myModal').modal('hide');
Run Code Online (Sandbox Code Playgroud)

(后):

window.$('#myModal').modal('hide');
Run Code Online (Sandbox Code Playgroud)

在这里找到答案:https ://github.com/ColorlibHQ/AdminLTE/issues/685


ran*_*082 6

更改导入语句有效。从

import * as $ from 'jquery';
Run Code Online (Sandbox Code Playgroud)

到:

declare var $ : any;
Run Code Online (Sandbox Code Playgroud)


Nɪs*_*ʜ ॐ 6

TypeError的原因:$(…).modal不是函数:

  1. 脚本加载顺序错误。
  2. 多个jQuery实例

解决方案:

  1. 如果脚本试图访问尚未到达的元素,那么您将得到一个错误。Bootstrap依赖于jQuery,因此必须首先引用jQuery。因此,必须先调用jquery.min.js,再调用bootstrap.min.js,然后再启动bootstrap Modal错误实际上是由于在调用模态函数之前不包括bootstrap的javascript导致的。模态是在bootstrap.js中定义的,而不是在jQuery中定义的。因此,应该以这种方式包括脚本

       <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
       <script type="text/javascript" src="js/bootstrap.js"></script>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果有多个jQuery实例,则第二个jQuery声明会阻止bootstrap.js正常工作。因此请jQuery.noConflict();在调用模式弹出窗口之前使用

    jQuery.noConflict();
    $('#prizePopup').modal('show');
    
    Run Code Online (Sandbox Code Playgroud)

    jQuery事件别名(例如).load.unload或者.error从jQuery 1.8开始不推荐使用。

    $(window).on('load', function(){ 
          $('#prizePopup').modal('show');
    });
    
    Run Code Online (Sandbox Code Playgroud)

    或者尝试直接打开模式弹出窗口

    $('#prizePopup').on('shown.bs.modal', function () {
          ...
    });
    
    Run Code Online (Sandbox Code Playgroud)


Ant*_*eno 6

用:

jQuery.noConflict();
$('#prizePopup').modal('toggle');
Run Code Online (Sandbox Code Playgroud)


Hie*_*yen 5

在 angular 中集成模态引导程序时,我遇到了这个错误。

这是我解决此问题的解决方案。

我分担为谁关心。

第一步,您需要安装jquerybootstrap通过npm命令。

其次你需要添加declare var $ : any;组件

并且可以使用$('#myModal').modal('hide');onSave() 方法

演示https://stackblitz.com/edit/angular-model-bootstrap-close?file=src/app/app.component.ts