我有一个div容器,其中包含html复选框及其标签.使用jquery我想在有人点击此容器中的标签时触发点击事件.
当我点击标签时,我看到jquery click事件触发了两次!
出于测试目的,我触发了复选框上的click事件而不是标签,此处复选框单击事件触发器只应该一次.
这是小提琴. http://jsfiddle.net/AnNvJ/2/
<tr>
<td>
<div id="test">
<label>
<input type="checkbox" id="1" />demo1</label>
<label>
<input type="checkbox" id="2" />demo2</label>
<label>
<input type="checkbox" id="3" />demo3</label>
</div>
</td>
<td> </td>
<td> </td>
</tr>
Run Code Online (Sandbox Code Playgroud)
JQUERY
$(document).ready(function () {
$('#test label').live('click', function (event) {
alert('clicked');
});
$('#test checkbox').live('click', function (event) {
alert('clicked');
});
});
Run Code Online (Sandbox Code Playgroud) 我正在使用ng-click,当我将它应用于SPAN标记时会触发两次.
HTML
<div ng-app="regApp" ng-controller="RegistrationCtrl" data-ng-init="GetEventDetail()" ng-show="data.EventName">
<h2>Registration for {{data.EventName}}</h2>
<span class="btn" id="btnSave" ng-click="PostRegistration()">Save </span>
</div>
Run Code Online (Sandbox Code Playgroud)
CONTROLLER
var app = angular.module('regApp', ['ui']);
app.controller('RegistrationCtrl', function ($scope, $http) {
$scope.PostRegistration = function () {
alert('click '); <--- fires twice
/// some code here --
};
Run Code Online (Sandbox Code Playgroud)
它应该只发射一次.我怎么能找到为什么会这样,以及如何解决它?
当我单击其中包含输入的标签时,Agnular的ng-click会触发两次.我试过$event.stopPropagation();但没有用,怎么解决这个问题?
我也检查了这个问题: 标签上的Angular.js ng-click事件被触发两次
<div class="list-group-item" ng-repeat="item in model.data">
<form role="form" name="selectForm" novalidate>
<label ng-click="$event.stopPropagation(); updateSelected();">
<input type="checkbox" ng-model="chechkedSkins[item.id]" />
<span>{{item.name}}</span>
</label>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)