1

ブートストラップ ボタン グループのクリック イベントに問題があります。アクティブなボタンの ID を取得しようとしています。現在クリックしているものを含めます(選択されていない場合)。問題は、現在クリックしているボタンが、選択したときに選択済みボタンとして追加されないことです。あたかもアクティブなクラスがまだ適用されていないかのように。

これが私のボタングループです:

  <div class="btn-group" id = "rbtns" data-toggle="buttons-checkbox" >
        <button class="btn rbtn" id = "0">0</button>
        <button class="btn rbtn" id = "1">1</button>
        <button class="btn rbtn" id = "2">2</button>
        <button class="btn rbtn" id = "3">3</button>
        <button class="btn rbtn" id = "4">4</button>
  </div>

そして私の行動:

 $( document ).ready(function() {

       $(".rbtn").click(function () {

        var data = [];

        $('#rbtns .btn.active').each(function() {
              data.push($(this).attr('id'));

        });

        alert ("Data length: " + data.length);
       });

クラスがアクティブなボタンのすべてのIDを確実に受け取るにはどうすればよいですか?

私が使用しているボタンは、ブートストラップ チェックボックス スタイルのボタンです。それらをクリックすると、それらが選択されます。それらをクリックすると、選択が解除されます。

4

3 に答える 3

2

アクティブなボタンをすべて取得する前に、クリック関数にクラスを追加できます。

$(this).addClass('active');

ボタンメソッドを使用して、取得する前にチェックボックスを設定します

$(this).button('toggle'); 

これは実用的な例ですが、ボタン( 'トグル')を2回呼び出すのはあまり好きではありません。

于 2013-04-09T19:25:39.947 に答える
0

フィドル: http://jsfiddle.net/xdyRt/

$(".rbtn").click(function () {
    $(this).toggleClass("active");     
    var data = [];

    $(".btn").each(function() {
        $(this).hasClass("active") ? data.push($(this).attr("id")) : null;
    });

    for (var i = 0; i < data.length; i++) {
        alert(data[i]);
    }
});
于 2013-04-09T19:25:38.027 に答える
0

クリックされたボタンをアクティブとして明示的に設定してみてください

$(".rbtn").click(function () {
  if ($(this).hasClass('active') == false){
    $(this).addClass('active');
  }
于 2013-04-09T19:25:48.090 に答える