ホームページ  >  記事  >  ウェブフロントエンド  >  ブートストラップ ドロップダウン メニューをクリックしてすぐに非表示にする場合の問題を解決する方法

ブートストラップ ドロップダウン メニューをクリックしてすぐに非表示にする場合の問題を解決する方法

零下一度
零下一度オリジナル
2017-06-15 13:30:481442ブラウズ

この記事では、ブートストラップのドロップダウンメニューをクリックした直後に非表示になるバグを解決する方法を主に紹介します。興味がある場合は、それについて学ぶことができます

昨日、私はjQueryとブートストラップを使用しました。今日は、ドロップダウン メニュー チェック ボックスを実装します。プロジェクトに結合した後、バンク チェック ボックスをクリックすると、ドロップダウン メニューが 1 つだけ非表示になるというバグを発見しました。を一度に選択することができます。


これがイベント伝播の理由となるはずです。コードは次のように変更されます:


var banks = $('.all').siblings().children();
$('.all>input').click(function() {
  var flag = $(this).prop('checked');
  banks.prop('checked', flag);
})

// 阻止事件传播, 否则在点击复选框的时候,dropdown-menu这个p会立即隐藏
$('.dropdown-menu label').click(function(e) {
  e.stopPropagation();
});
banks.click(function() {
  // 如果有一个没选中,全选按钮不选中
  // 如果全部选中,全选按钮被选中
  var num = 0;
  banks.each(function() {
    if ($(this).prop("checked")) {
      num++;
    }
  })
  if (num == banks.length) {
    $('.all>input').prop('checked', true);
  } else {
    $('.all>input').prop('checked', false);
  }
})

さらに、追加する必要がある新しい関数は、「保存」ボタンをクリックするときです。選択した銀行名はカンマで区切る必要があります。文字列としてバックグラウンドに渡されます。この部分は比較的単純で、コードは次のとおりです:


// 在提交时,获取选中的所有值,并把这些值拼接成字符串
$('.submit').click(function() {
  var bankArr = [];
  banks.each(function() {
    if ($(this).prop("checked")) {
      bankArr.push($(this).val());
    }
  });
  var bankStr = bankArr.join(',');
  console.log(bankStr);
})

以上がブートストラップ ドロップダウン メニューをクリックしてすぐに非表示にする場合の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。