【问题标题】:Bootstrap : TypeError: $(...).modal is not a functionBootstrap : TypeError: $(...).modal 不是函数
【发布时间】:2015-11-26 08:43:05
【问题描述】:

我一直在尝试从 jquery 调用引导模式并不断收到此错误消息:

TypeError: $(...).modal is not a function

这是我的代码:

<button id="btnTest" class="btn btn-default">Show Modal</button>
<div id="dummyModal" role="dialog" class="modal fade">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" data-dismiss="modal" class="close">&times;</button>
          <h4 class="modal-title">Error</h4>
        </div>
        <div class="modal-body">
          <p>Quick Brown Fox Jumps Over The Lazy Dog</p>
        </div>
        <div class="modal-footer">
          <button type="button" data-dismiss="modal" class="btn btn-default">Close</button>
        </div>
      </div>
    </div>
  </div>
</div>
<script type="text/javascript" src="/js/jquery-1.11.3.js"></script>
<script type="text/javascript" src="/js/bootstrap.js"></script>
<script type="text/javascript">
  $('document').ready(function () {
    $('#btnTest').click(function () {
        $('#dummyModal').modal('show');
    });
  });
</script>

仅供参考,我使用引导程序 3.3.5 和 jquery 1.11.3。我已经从this thread 尝试过jQuery.noConflict(); ... etc,但仍然没有运气。这是complete code

【问题讨论】:

  • 你为什么使用 jQuery 1.x?支持 IE 吗?
  • javascript 文件是否正确加载?
  • 无论如何,你读过this吗?有一部分是关于模态的...
  • @dingo_d 不,不是真的,我只是在测试这个。它与 jquery 1.x 不兼容吗?
  • @dvhh 是的,一切都已正确加载

标签: jquery twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

使用这个。 它会起作用的。 我用过bootstrap 3.3.5jquery 1.11.3

$('document').ready(function() {
  $('#btnTest').click(function() {
    $('#dummyModal').modal('show');
  });
});
body {
  background-color: #eee;
  padding-top: 40px;
  padding-bottom: 40px;
}
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  <title>Modal Test</title>
</head>

<body>
  <div class="container">
    <button id="btnTest" class="btn btn-default">Show Modal</button>
    <div id="dummyModal" role="dialog" class="modal fade">
      <div class="modal-dialog">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" data-dismiss="modal" class="close">&times;</button>
            <h4 class="modal-title">Error</h4>
          </div>
          <div class="modal-body">
            <p>Quick Brown Fox Jumps Over The Lazy Dog</p>
          </div>
          <div class="modal-footer">
            <button type="button" data-dismiss="modal" class="btn btn-default">Close</button>
          </div>
        </div>
      </div>
    </div>
  </div>
  <script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
  <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>

</html>

【讨论】:

  • 我这么认为@Siva
【解决方案2】:

当我尝试从 jquery 调用引导模式时,我也遇到了同样的错误。但发生这种情况是因为我们使用的是引导模式,为此我们需要附加一个 cdn bootstrap.min.js,它是

&lt;script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"&gt;&lt;/script&gt;

希望这会有所帮助,因为我在尝试使用 jQuery 调用引导模式时错过了这一点

$('#button').on('click',function(){ $('#myModal').modal(); });

myModal是Bootstrap modal的id 并且当您调用单击该按钮时,您必须为按钮提供单击事件,然后将显示弹出模式。

【讨论】:

    【解决方案3】:

    由于在 HTML 头中添加了两次 jquery CDN (&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;),我遇到了同样的错误。

    【讨论】:

      【解决方案4】:

      两次添加 jquery*.js 文件引用也可能导致该问题。它可能是您的捆绑包的一部分,您也可能已添加到页面中。因此,您需要删除额外的参考,如

      【讨论】:

        【解决方案5】:

        我遇到了这个问题,因为我的 dataTables JS 文件使用 jquery 在 JQuery JS 文件之前加载。更改 JS 文件的顺序修复了它.. :|

        例如

        之前:

            <link href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css" rel="stylesheet" crossorigin="anonymous">
            <script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        

        之后:

            <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
            <link href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css" rel="stylesheet" crossorigin="anonymous">
            <script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
        

        【讨论】:

          【解决方案6】:

          如果您正在使用任何布局页面,则将脚本部分从布局页面的底部移动到头部。 bcz,应首先加载 javascript 文件。这对我有用

          【讨论】:

          • 这个答案太错误了。不应先加载 Javascript。
          • 对不起,如果你想在jquery中使用modal函数,首先你需要加载jquery文件。怎么会错?
          • 我知道了,在页面顶部编写脚本的问题是阻塞。浏览器必须停止处理页面,直到脚本被下载、解析和执行。原因很清楚,这些脚本可能会在页面中插入更多内容来改变渲染结果,它们也可能会删除不需要渲染的内容等。但有时需要在加载之前加载一些脚本该页面,但在这种情况下,我会寻求一种异步加载此脚本的方法
          猜你喜欢
          • 2020-04-29
          • 1970-01-01
          • 2020-09-10
          • 2013-09-09
          • 2015-05-09
          • 2019-11-06
          • 2014-11-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多