javascript - 避免 Bootstrap Modal 中的额外事件调用

标签 javascript jquery twitter-bootstrap

我正在尝试使用 ajax 请求在 Bootstrap Modal 中加载数据。这是我的示例代码:http://jsfiddle.net/tejashsoni111/f97gpwte/2/

HTML:

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" id="button">
  Launch demo modal
</button>
<div id="exec_count"></div>

<!-- Modal -->
<div class="modal fade" id="myModal" 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-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>

JS:

var count=0

$("#button").click(function(){
    $('#myModal').on('shown.bs.modal', function (e) {
        count++;
        jQuery("#exec_count").append("<span>"+count+"</span></br>");
    });

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

    $('#myModal').on('hide.bs.modal', function (e) {
        count=0;
        jQuery("#exec_count").append("</br>");
    });
});

问题是,每次按下按钮后,事件调用都会增加一。所以每次ajax调用的次数也随着事件调用而增加。在示例中,我用显示事件调用计数替换了 ajax 代码。

我无法找到任何解决方案来避免额外的调用。

任何帮助将不胜感激,提前致谢。

最佳答案

每次单击按钮时都会添加事件处理程序。您需要将事件处理程序移至点击事件之外。

var count=0

$('#myModal').on('shown.bs.modal', function (e) {
    count++;
    jQuery("#exec_count").append("<span>"+count+"</span></br>");
});

$('#myModal').on('hide.bs.modal', function (e) {
    count=0;
    jQuery("#exec_count").append("</br>");
});

$("#button").click(function(){
    $('#myModal').modal('show');
});

关于javascript - 避免 Bootstrap Modal 中的额外事件调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27689340/

相关文章:

javascript - 如何使用jquery编写 Bootstrap 轮播元素?

javascript - 如何从 JavaScript 外包 HTML 标签?

javascript - 在需要时加载谷歌地图 api 脚本? jquery.getScript()?

javascript - 从动态表中获取每个单元格的值

css - 如何删除在我的 Bootstrap 导航栏下方生成的行

javascript - 使用 html css 和 javascript 创建弹出框

javascript - Codeigniter:如果 Controller 未返回数据,则文本输入字段的默认值

javascript - 复杂的 JSON obj 和 jQuery 或 Javascript 映射到特定的键、值

html - 只要下拉菜单保持打开状态,如何更改 Bootstrap 下拉菜单的背景颜色?

c# - 带有 asp 内容的 Bootstrap 弹出窗口不起作用