【问题标题】:check a div instead of a checkbox检查 div 而不是复选框
【发布时间】:2017-10-01 10:01:17
【问题描述】:

我有一个 div,其中显示了我可以邀请参加拍卖的用户列表。列表是从数据库加载的

一切正常,我想检查所有标签而不是复选框,所以我这样做:

<div ng-show="showBid" class="panel panel-default">
<div class="panel-heading">Invite Members</div>
<div class="panel-body">
    <div ng-repeat="user in users">
        <div class="user">
            <input type="checkbox" ng-model="user.isChecked" ng-change="insertinvited(user)" name="checkbox" class="checkbox" id="checkbox">
            <label class="col-md-4" ng-hide="user.name == profile" for="checkbox">
              <img ng-src="{{user.img}}" class="userImage">
              <div class="username"> {{user.name}}</div>
              <div class="userrole"> {{user.role}} </div>
              <div class="usercompany">{{user.company}}</div>
          </label>
        </div>
   </div>
 </div>
 </div>

我在 css 上这样做:

label {
  display: block;
  cursor: pointer;
}
.checkbox {
  display: none;
}
.checkbox:checked + label {
  background-color: lightseagreen;
}

但这仅适用于第一个用户,不适用于其他用户

【问题讨论】:

  • 我不认为 div 是标签的有效子标签
  • 子元素使用 span 而不是 div
  • 用跨度编辑
  • 检查这些链接。 Link 1Link 2
  • @Nimish - 注意它也是有角度的

标签: javascript css angularjs checkbox label


【解决方案1】:

label {
  display: block;
  background-color: #E4E4E4;
  border-bottom: 1px solid #CCC;
  cursor: pointer;
  padding: 5px 10px;
}

label * {
  display: inline-block;
}
.checkbox {
  display: none;
}
.checkbox:checked + label {
  background-color: red;
  color: white;
}
<div ng-show="showBid" class="panel panel-default">
  <div class="panel-heading">Invite Members</div>
  <div class="panel-body">
    <div ng-repeat="user in users">
      <div class="user">
        <input type="checkbox" ng-model="user.isChecked" ng-change="insertinvited(user)" name="checkbox" class="checkbox" id="user-{{user.id}}">
        <label class="col-md-4" ng-hide="user.name == profile" for="user-{{user.id}}">
          <img ng-src="{{user.img}}" class="userImage">
          <div class="username">Messi</div>
          <div class="userrole">Striker</div>
          <div class="usercompany">Barcelona</div> 
        </label>
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 对不起,这仅适用于第一个用户,因为您再次与另一个用户一起使用它。但是当我执行 ng-repeat 时,我会同时获得所有用户
  • 我使用您使用过的部分代码进行了编辑。你能帮我解决这个问题吗?
  • 您只需要确保 input-'id' 和 label-'for' 对于每个用户来说都是相同的唯一值。您可以为此使用 {{user.id}} 值。
  • 像这样?
  • 几乎,HTML id 参数不能是纯数字。所以将它们更改为 id="user-{{user.id}}" 和 for="user-{{user.id}}"。当然,在这种情况下,user.id 必须是数据库表中的一行。
【解决方案2】:

这将在 input 上没有 ID 的情况下工作

var myApp = angular.module('myApp', [])
  .controller('UsersCtrl', function($scope) {
    $scope.users = [{
      name: 'User One',
      role: 'Admin',
      company: 'ABC Inc.'
    }, {
      name: 'User Two',
      role: 'Manafer',
      company: 'XYZ Inc.'
    }, {
      name: 'Foo Bar',
      role: 'Admin',
      company: 'ABC Inc.'
    }];
  });
body { background-color: #eee; color: #444; padding: 20px; }

.user label {
  display: block;
  background-color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
  margin: 2px;
  padding: 0;
  cursor: pointer;
}
.username { font-size: 14px; font-weight: bold; }
.user label>div { padding: 4px 10px; }
.user label .checkbox { display: none; }

.user label .checkbox:checked+div { background-color: teal; color: white; }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="UsersCtrl">
  <div ng-repeat="user in users">
    <div class="user">
      <label class="col-md-4" ng-hide="user.name == profile">
        <input type="checkbox" ng-model="user.isChecked" ng-change="insertinvited(user)" name="checkbox" class="checkbox">
          <div>
            <img ng-src="{{user.img}}" class="userImage">
            <div class="username">{{user.name}}</div>
            <div class="userrole">{{user.role}}</div>
            <div class="usercompany">{{user.company}}</div> 
          </div>
      </label>
    </div>
  </div>
</div>

【讨论】:

  • 我明白这一点,但这适用于您创建的两个用户。在我的情况下,我一次从数据库中加载所有用户。当我写标签时,它会加载我存储的 4 个用户,
猜你喜欢
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 2015-08-13
  • 2020-10-12
  • 2015-12-28
相关资源
最近更新 更多