Javascript 具有多个相同输入的引导切换无效

Javascript 具有多个相同输入的引导切换无效,javascript,jquery,html,twitter-bootstrap-3,Javascript,Jquery,Html,Twitter Bootstrap 3,具有多个相同输入的引导切换不工作,除非未按第一个输入。。但并不是所有的都被选中/取消选中 我做了一些小的 我需要做的是,如果我按下一个,所有其他的都会有相同的状态 $(document).ready(function(){ $('.testClass').on('change', function() { if($(this).prop('checked')) { $('.testClass').each(function(key, val) { $(va

具有多个相同输入的引导切换不工作,除非未按第一个输入。。但并不是所有的都被选中/取消选中

我做了一些小的

我需要做的是,如果我按下一个,所有其他的都会有相同的状态

$(document).ready(function(){
  $('.testClass').on('change', function() {
    if($(this).prop('checked')) {
      $('.testClass').each(function(key, val) {
        $(val).bootstrapToggle('on');
      });
    } else {
      $('.testClass').each(function(key, val) {
        $(val).bootstrapToggle('off');
      });
    }
  })
});
有什么建议吗?

只需从代码中删除
$('.testClass')。每个(函数(键,val){

  $(document).ready(function(){
    $('.testClass').on('change', function() {
      if($(this).prop('checked')) {
          $(this).bootstrapToggle('on');
      } else {
          $(this).bootstrapToggle('off');
      }
    })
  });

看起来这段代码导致了一个内循环,我对这个插件不太熟悉,但这里有一个解决方法。如果我理解你的目标,当一个切换被更改时,你想将所有切换设置为相同的状态

$(document).ready(function(){
  $('.toggle-group').on('click', function(e) {
    // wait for the plugin to update the actual checkbox
    setTimeout(function(){
        // check if the checkbox is checked or not  
        var state = ( $(e.currentTarget).prev('input')[0].checked ) ?
        'on' : 'off';

      // update all the bootstrapToggle checkbox instances with the new 
      // state
      $('.testClass').each(function(key, val) {
        $(val).bootstrapToggle(state);
      });

    }, 50);
  });
});

我认为正在发生的是在示例代码中的“更改”事件在循环中不断刷新。这个答案远不是一个优雅的解决方案,但突出了这个问题。setTimeout允许插件在测试前更新复选框,因为它看起来不像Bootstraptogle接受任何回调。

@digital pollution刚刚告诉了我这个解释,但我认为我发现了一个更好的方法r解决方案。它基本上在开始时删除('change')事件,并在结束时将其添加回

var-toggleButtons=函数toggleButtons(){
$('.testClass').off('change');
if($(this.prop('checked')){
$('.testClass')。不是($(this))。每个(函数(键,val){
$(val).bootstrapToggle('on');
});
}否则{
$('.testClass')。不是($(this))。每个(函数(键,val){
$(val).bootstraptogle('off');
});
}
$('.testClass')。on('change',toggleButtons);
}
$(文档).ready(函数(){
$('.testClass')。on('change',toggleButtons);
});


我一直反对on和offing事件绑定,但这只是个人偏好,而不是任何技术原因。这个答案同样好,应该由OP.nice考虑!它起作用了…;)只是有趣的原因,当我使用
$(文档)。on('change','.testClass',togglebutions)
I get
compiled_part_1.js:3 Uncaught TypeError:((n.event.special[g.origType]|{}).handle | | g.handler)。apply不是一个函数
而是在使用
$(document.ready)时。ready(func…)
一切正常吗?:O@Scorpioniz我认为这与传播有关。看一看