jquery - 点击标签触发两次滑动动画

标签 jquery angularjs

我无法在这个 demo 中弄清楚这一点,为什么点击标签触发滑动动画两次,而点击复选框触发滑动动画一次。有人可以解释一下吗?谢谢!

我在此处附上代码。

<div ng-app="labelApp" ng-controller="labelCtrl">
  <label ng-click="toggle()">
    <input type="checkbox">Click to toggle slide</label>
  <div id="myDiv">
    Clicking check box triggers sliding animation once. 
    <br>
    Clicking label triggers sliding animation twice.
  </div>
</div>

angular.module("labelApp", [])
  .controller("labelCtrl", function($scope) {
    $scope.toggle = function() {
      $("#myDiv").slideToggle();
    }
  });

最佳答案

当您单击标签时,事件将向下传输到输入,在那里它将导致复选框被选中,然后它会向上冒泡返回到再次>标签。因此,label 上的处理程序会被触发两次。快速解决方法是将处理程序放在输入上:

<label>
    <input ng-click="toggle()" type="checkbox">Click to toggle slide
</label>

但可能更合适的是使用ng-change:

<input ng-change="toggle()" ng-model="isChecked" type="checkbox">Click to toggle slide

关于jquery - 点击标签触发两次滑动动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688831/

相关文章:

angularjs - spring Boot 和 Angular JS : what is the best way to deal with the authentication?

javascript - 使用 Javascript 创建动态 ID

javascript - 带有标题和子标题的代码

jquery - 分页动画 Ember 集合

c# - 如何将格式化字符串传递给 JavaScript 变量?请参阅 c# 示例我的意思

javascript - 信息窗口 AngularJS 中的按钮

javascript - 检查 angularjs 中未保存的表单数据(使用 ui-router 的多个表单)

javascript - 通过动态名称更新局部变量名称

angularjs - Angular ui-mask 有什么用?

javascript - 如何在 JavaScript 中检索 HttpResponseMessage 文件名