【问题标题】:Bootstrap $('#myModal').modal('show') is not working引导 $('#myModal').modal('show') 不起作用
【发布时间】:2016-04-17 03:18:05
【问题描述】:

我不知道为什么,但是所有的模态函数都不适用于我。 我检查了版本和负载,它们都很好。

我不断收到此错误消息:

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

对于隐藏,我已经找到了替代方案。 而不是:

$('#myModal').modal('hide');

我用过这个:

$('#myModal .close').click();

而且效果很好。

现在问题出在节目上

$('#myModal').modal("show");

我也试过了

$('#myModal').modal("toggle");

还有:

$('#myModal').modal();

但不幸的是,它们都不起作用。

这里是 html 代码 - 当单击按钮时,我将进行一些验证并处理来自 Web 服务的 json 数据,如果它成功,那么我想显示我的模态 - 除了显示之外一切正常。

 <button type="button" id="creatNewAcount" class="btn btn-default" data-toggle="modal">Sign up</button>

如果有其他选择,我想知道。

【问题讨论】:

  • 您需要先加载 jQuery,然后再加载 jQuery UI/Bootstrap modal。你确定它是按那个顺序加载的吗?
  • 不是吗?! &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"&gt;&lt;/script&gt; &lt;script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"&gt;&lt;/script&gt; &lt;link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"/&gt;
  • 除非您输入代码,否则无法回答
  • 尝试更新版本的 jQuery。 1.12 已经很老了。
  • 我确定,因为正如我提到的,同样的事情发生在隐藏处,但是当我用我发现的那个替换它时它工作了,所以我希望能替换这个节目。

标签: javascript jquery bootstrap-modal


【解决方案1】:

此类问题的最常见原因是

1.如果你不止一次定义了jquery库。

<script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

    <div class="modal fade" id="myModal" aria-hidden="true">
    ...
    ...
    </div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

bootstrap 库被应用到第一个 jquery 库,但是当你重新加载 jquery 库时,原始的 bootstrap 加载会丢失(Modal 函数在 bootstrap 中)。

2.请将您的 JavaScript 代码封装在里面

$(document).ready(function(){});

3.请检查modal的id是否相同

作为您为组件定义的组件(同时检查相同 id 的重复项)。

【讨论】:

  • 天哪,它奏效了。终于在中间找到了重复的那个。自从您发布答案以来,我一直在搜索我的代码。非常感谢你真的帮助了我。我真的很高兴。
  • @PrakashThete Legendary 非常感谢您对一个超级令人沮丧的问题的第一个有效解决方案
  • @PrakashThete 你好,我还是有问题我已经在下面添加了我的代码,你可以看看。
  • @MoiHawk 请针对您的问题提出一个新问题。人们或许可以通过这种方式帮助您。
  • 你救了我的命。我爱你
【解决方案2】:
<div class="modal fade" id="myModal" aria-hidden="true">
   ...
   ...
</div>

注意:从 div 中删除淡入淡出类并享受它应该工作

【讨论】:

  • 能否请您分享删除淡入淡出类的原因。它在所有大多数系统中都与淡入淡出类一起使用,但在一个特定系统上面临和问题,并在移除淡入淡出类并开始工作后尝试。
  • @Rafikmalek 我相信这是因为在某处有另一个 fade 类覆盖了淡入淡出类。删除应该只是删除特殊效果,同时保留功能。
  • 您节省了我的时间,我阅读了您的回答,它帮助我解决了与真实用户待命的生产问题:D
  • 这解决了我的问题,谢谢!
【解决方案3】:

这可能有几个原因:

  1. 您忘记在文档中包含 Jquery 库
  2. 您在文档中多次包含 Jquery 库
  3. 您忘记在文档中包含 bootstrap.js 库
  4. 您的 Javascript 和 Bootstrap 的版本不匹配。请参阅引导文档以确保版本匹配
  5. 模态 &lt;div&gt; 缺少 modal
  6. 模态&lt;div&gt; 的ID 不正确。 (例如:您错误地在&lt;div&gt; 的ID 中添加了#
  7. Jquery 选择器中缺少# 符号

【讨论】:

    【解决方案4】:

    我在使用 Modal Popup Bootstrap 时遇到了同样的问题,我使用 Id 并触发点击事件来显示和隐藏模式弹出窗口,而不是 $("#Id").modal('show') 和 $("#id" ).modal('隐藏'), `

        <button type="button" id="btnPurchaseClose" class="close" data dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span></button>
    <a class="btn btn-default" id="btnOpenPurchasePopup" data-toggle="modal" data target="#newPurchasePopup">Select</a>
        $('#btnPurchaseClose').trigger('click');// for close popup
    
         $('#btnOpenPurchase').trigger('click');`// for open popup
    

    【讨论】:

      【解决方案5】:

      我的根本原因是我忘记在 id 名称前添加 #。蹩脚但真实。

      来自

      $('scheduleModal').modal('show');
      

      $('#scheduleModal').modal('show');
      

      供您参考,适合我的代码序列是

      <script>
      function scheduleRequest() {
              $('#scheduleModal').modal('show');
          }
      </script>
      <script src="<c:url value="/resources/bootstrap/js/bootstrap.min.js"/>">
      </script>
      <script
          src="<c:url value="/resources/plugins/fastclick/fastclick.min.js"/>">
      </script>
      <script
          src="<c:url value="/resources/plugins/slimScroll/jquery.slimscroll.min.js"/>">
      </script>
      <script
          src="<c:url value="/resources/plugins/datatables/jquery.dataTables.min.js"/>">  
      </script>
      <script
          src="<c:url value="/resources/plugins/datatables/dataTables.bootstrap.min.js"/>">
      </script>
      <script src="<c:url value="/resources/dist/js/demo.js"/>">
      </script>
      

      【讨论】:

        【解决方案6】:

        使用.modal({show:true}).modal({show:false}) 而不是('show')('hide') ...它似乎依赖于引导/ jquery 版本组合。希望能帮助到你。

        【讨论】:

          【解决方案7】:

          'bootstrap modal is not opening'的解决方法是,把你的Jquery CDN放在head标签的前面(在head标签之后)。

          我浪费了两天时间才发现这个问题。

          【讨论】:

          • 不知道为什么这是赞成的,但 earlier answer 说同样的事情不是。
          【解决方案8】:

          尝试检查触发按钮是否具有属性 type="button"。 工作示例:

            <button type="button" id="trigger" style="visibility:visible;" onclick="modal_btn_click()">Trigger Modal Click</button>
          
            <!-- Modal -->
            <div class="modal fade" id="myModal" role="dialog">
              <div class="modal-dialog modal-sm">
                <div class="modal-content">
                  <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                    <h4 class="modal-title">Modal Header</h4>
                  </div>
                  <div class="modal-body">
                    <p>This is a small modal.</p>
                  </div>
                  <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                  </div>
                </div>
              </div>
            </div>
          
             <script >
                     function modal_btn_click() {
          
                         $('#myModal').modal({ show: true });
                     }
             </script>
          

          【讨论】:

            【解决方案9】:

            不带参数试试这个

            $('#myModal').modal();
            

            应该可以了

            【讨论】:

              【解决方案10】:

              你确定模态框的 id 是“myModal”吗?如果不是,则调用不会触发它。

              另外——仅仅通过阅读你的帖子——你正在用这个按钮触发一个功能/验证

              <button type="button" id="creatNewAcount" class="btn btn-default" data-toggle="modal">Sign up</button>
              

              然后如果一切顺利 - 你想触发模态。 - 如果是这种情况 - 那么您应该从此按钮单击中删除切换。我想您有一个与此点击相关的事件处理程序?您需要 .modal("show") 作为该功能的一部分。未从此按钮切换。还有 - 这个 id 是正确的“creatNewAcount”而不是这个拼写“createNewAccount”

              <button type="button" id="creatNewAcount" class="btn btn-default" >Sign up</button>
              

              【讨论】:

                【解决方案11】:

                使用对象调用...

                <a href="#" onclick='$("#myModal").modal("show");'>Try This</a>
                

                或者,如果您使用 ajax 在获取结果后显示该模式,这对我有用...

                $.ajax({ url: "YourUrl",
                type: "POST", data: "x=1&y=2&z=3",
                cache: false, success: function(result){
                        // Your Function here
                        $("#myModal").modal("show");
                    }
                });
                

                【讨论】:

                • 我不想马上打电话。
                • 问题是...您是否使用 ajax 进行一些验证,以及您希望在模态弹出窗口中显示的任何结果?
                • 我想这样做,但不是马上我有一些代码,如果这段代码生成正确的结果,那么模态应该出现,否则它不会出现。
                • 不,我不想在模式中显示结果。我希望在某些情况下根据结果显示模态。
                • 我更新了我的答案......或者如果仍然无法正常工作,你能告诉我们生成代码吗?
                【解决方案12】:
                <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script><script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>
                

                第一个 googleapis 脚本现在无法运行,请使用 jquery 提供的第二个脚本

                【讨论】:

                  【解决方案13】:

                  必须先加载 jQuery 库。就我而言,我首先加载引导库,还尝试使用目标标记并触发点击触发器。但主要问题是 - 必须先加载 jquery。

                  【讨论】:

                    【解决方案14】:

                    还请确保模态 div 嵌套在您的 &lt;body&gt; 元素中。

                    【讨论】:

                      【解决方案15】:

                      在为我的问题尝试了网络上的所有内容后,我需要在脚本中添加一小段延迟,然后再尝试加载该框。

                      即使我已将加载框的行放在整个脚本的最后一行。我只是使用了 500 毫秒的延迟

                      setTimeout(() => {  $('#modalID').modal('show'); }, 500);
                      

                      希望将来能对某人有所帮助。 100% 同意这是可能的,因为我不了解我的脚本流程和加载顺序。但这就是我解决它的方式

                      【讨论】:

                        【解决方案16】:

                        就我而言,bootstrap.css 和 bootstrap.js 版本不匹配。 如果我删除淡入淡出类,它就可以工作。但是背景消失了。 我添加了相同版本的引导文件。现在它运行良好。 谢谢@Mohammed Shareef C。

                        【讨论】:

                          猜你喜欢
                          • 2021-10-07
                          • 2023-03-28
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2020-04-09
                          • 2023-03-27
                          • 2013-09-09
                          相关资源
                          最近更新 更多