javascript - Bootstrap 模态仅在刷新页面后有效

标签 javascript jquery css twitter-bootstrap

我在使用 Bootstrap Modal 时遇到了一个非常奇怪的问题:

我第一次加载我的网页时清除了浏览器缓存,然后单击应该打开的图标
它没有打开模式。当我刷新页面并单击该图标时,模态出现...当我关闭模态并再次单击该图标时,它再次工作。

这是我的标题代码:

<link href="libs/jquery/jquery-ui.css" rel="stylesheet" />
<link href="libs/bootstrap/css/bootstrap.min.css" rel="stylesheet" />

<script src="libs/jquery/jquery-2.1.4.min.js"></script>
<script src="libs/jquery/jquery-migrate-1.2.1.min.js"></script>
<script src="libs/jquery/jquery-1.11.3.min.js"></script>
<script>$(document).ready(function() { $.noConflict(); )};</script>
<script src="libs/bootstrap/js/bootstrap.min.js"></script>
<script src="libs/jquery/jquery-ui.js"></script>

这是我的 body 密码:

<a id="myIcon">Open Modal</a>

<div class="modal" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModal">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h4 class="modal-title">Title</h4>
      </div>
      <div class="modal-body">Body</div>
      <div class="modal-footer">Footer</div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

对于那些想要查看完整代码的人,这是我的 JS:

$(document).ready(function() {
    $('#myIcon').click(function () {
        $('#myModal').modal('show');
    }
});

最佳答案

我知道发生了什么。您忘记在 anchor 中设置一些属性。

<a id="myIcon" data-toggle="modal" data-target="#myModal">Open Modal</a>

<div class="modal" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModal">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Title</h4>
            </div>
            <div class="modal-body">Body</div>
            <div class="modal-footer">Footer</div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

您可以避免您的脚本。在这种情况下,您的脚本只是模拟对模式的点击。 Bootstrap 已经有一个与按钮相关联的事件,这些按钮具有我在您的 anchor 中编写的属性。

$(document).ready(function() { 
    // You are triggering a click in your button
    $('#myIcon').click(function () {
        // After the click, you force the modal to be shown
        $('#myModal').modal('show');
    }
});

您可以只允许 JS 与模态交互。这样,模式将没有关联的事件。

<a class="open_modal" data-modal="myModal">Open Modal</a>

<div class="modal" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModal">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Title</h4>
            </div>
            <div class="modal-body">Body</div>
            <div class="modal-footer">Footer</div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

您删除 anchor 的属性,然后:

$(document).ready(function() { 

    $('.open_modal').on('click',function () {
        var idModal = $(this).data("modal")
        $(idModal).modal('show');
    }
});

这样,如果单击 .open_modal 元素,它的数据模态表示模态 ID,用于显示模态。

关于javascript - Bootstrap 模态仅在刷新页面后有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33673764/

相关文章:

javascript - 当所需值是另一种形式的 0 时,Firefox 会强制输入 0。例如 : 00. 00。有什么可以做的吗?

javascript - 使用 ajax 返回 Controller 方法值

javascript - 多选功能无法正常工作

css - 如何在 Safari 中转换 Flash?

html - JavaScript : Random Style Class Using Math. 随机()

javascript - 如何缓存 sencha touch 文件以提高性能

javascript - 将图像绘制到 Canvas 并通过 base64 对其进行编码

javascript - 使用 ng-if 和 ng-repeat 添加 div

javascript - 显示/隐藏信息 jQuery

html - 在放下元素时动画化 html5 拖放