javascript - 传递动态名称选择器不起作用

标签 javascript jquery twitter-bootstrap

您能否看一下这个演示并告诉我为什么我无法创建动态输入名称选择器?我想做的是根据 Bootstrap Tab 功能动态传递选择器的名称。

var checkname;

$('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
  var target = $(e.target).attr("href") // activated tab
  checkname = target.substring(1);
});


$("input:checkbox[name=" + checkname + "]").on('change', function() {
  if ($(this).is(':checked')) {
    alert('Checked');
  } else {
    alert('Un Checked');
  }
});
@import 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css';
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<div class="container">
  <div class="col-md-3">
    <ul id="myTab" class="nav nav-tabs">
      <li class="active"><a href="#home" data-toggle="tab">Home</a>
      </li>
      <li class=""><a href="#profile" data-toggle="tab">Profile</a>
      </li>
    </ul>
    <div id="myTabContent" class="tab-content">
      <div class="tab-pane fade active in" id="home">
        <input type="checkbox" name="home" value="unit-in-group">Home
      </div>
      <div class="tab-pane fade" id="profile">
        <input type="checkbox" name="profile" value="unit-in-group">Profile
      </div>
    </div>
  </div>
</div>

最佳答案

扩展@tushar的评论:

By the time when the variable is used it is undefined, move the code of binding event at the end of show.bs.modal

问题是事件 show.bs.tab 被称为异步,因此当您尝试在 $("input:checkbox[name ="+检查名称+"]")。您可以做什么,确保在触发 show.bs.modal 事件时首先绑定(bind) change 事件。

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  // Activated tab
  var target = $(e.target).attr("href");
  // When we have the target we can bind the change event - not before!
  bindChange(target.slice(1));
});

function bindChange(checkname) {

  $("input:checkbox[name="+checkname+"]").on('change', function(){
    if ($(this).is(':checked')) {
      alert('Checked');
    }
    else {
      alert('Un Checked');
    }
  });
}

关于javascript - 传递动态名称选择器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798456/

相关文章:

javascript - Angular : $scope and template breaking after using a $resource

javascript - 如何定义基于其他任务的 grunt 任务?

javascript - 如何使用 javascript 将用户 friend 连接的 facebook graph api 响应存储到变量或数组以便稍后使用

javascript - 图像 slider 中的最后一个图像在 mouseenter 上跳跃

css - Bootstrap 表单输入对齐

javascript - 验证提交时页面中是否选中单选按钮 : AngularJs

Javascript "load"事件未按预期工作

twitter-bootstrap - Durandal 2.0 中的 Bootstrap 下拉菜单

php - 基于变量 PHP jQuery 显示和隐藏 DIV

css - Bootstrap 4 - 防止链接在导航栏上断行