每次打开模式时,都会调用一次jquery事件

时间:2019-01-05 17:33:53

标签: jquery bootstrap-4 event-handling

我有一个引导程序模式窗体,其中包含要跟踪的项目列表。如果选中,有一个全选框,可以选择/取消选择列表中的所有项目。每当我显示不了解的模式时,都会调用一次jquery函数。 第一次打开模式时,将调用jquery函数。 第二次打开模式,jquery函数被调用两次。 第三次打开模态,jquery函数被调用三次。 等等。 为什么每次打开模态时都会一次调用此复选框功能? jQuery是否会将内容推送到某处的某种类型的堆栈上? 我想做的是,如果用户选择了所有要检查的项目,则会弹出一个警报。但是我不希望他/她收到多个警报。下面的代码:

$('#realTimeModal').on('show.bs.modal', function (e) {
  var modal = $(this)
  console.log('controller-1253: realTimeModal handler');

  //first, clear out any previous layers
  clearLayers();
  console.log('show_realtime, updatePositions: ', updatePositions );
  clearInterval(updatePositions);

  /*
   * Check to see if the 'Toggle All' checkbox is checked. If so
   * either select all checkboxes or deselect them.
   */

  $("#check_rt").change(function () {
    console.log('==================================');
    console.log('=====     in #check_rt   =========');
    console.log('==================================');
    var checked = $(this).prop('checked');
    if (checked == true) {
      $.each($("input[class='form-check-input callSign_checkbox-rt']"), function () {
        $(this).prop('checked', true);
      });
      trackAll = 'true';
    } 
    else {
      $.each($("input[class='form-check-input callSign_checkbox-rt']"), function () {
        $(this).prop('checked', false);
      });
      trackAll = 'false';
    }
    //if ( trackAll == 'true' )
      //alert('If you select all aircraft, breadcrumbs will not be displayed.');
  }); 
}) // $('#realTimeModal').on('show.....)

我想做的只是在用户选中“全选”复选框时弹出警报。但是我只希望一个警报,而不是打开模态时的警报数目。我在这里缺少jQuery基本的东西吗?

谢谢.....

1 个答案:

答案 0 :(得分:0)

每次打开模式时,您都将添加一个事件处理程序。

函数-

$("#check_rt").change(function () { ... }

是在-

中定义的
$('#realTimeModal').on('show.bs.modal', function (e) { ... }

情况并非如此。您应该在模式显示函数调用之外调用$("#check_rt").change()