Событие на label срабатывает дважды
Добрый день, подскажите, где почитать, почему событие при клике на лэйбл с вложенным инпутом срабатывает дважды и как это побороть (избегая for/id)?
<label class="label checked"><input type="checkbox" checked="checked" /> Внутри </label> <label class="label"><input type="checkbox" />Внутри</label> <input type="checkbox" checked="checked" /><label class="label checked" for="n1"> Вне</label> <input type="checkbox" id="n2" data-total="13000" /><label class="label" for="n2"> Вне</label>
jQuery(document).ready(function(){
jQuery('label').click(function(){
jQuery(this).toggleClass("checked");
});
});
Ссылка на живой код http://jsfiddle.net/e3vt7y1x/ |
Цитата:
Цитата:
<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.checked {
color: red;
}
</style>
<script type='text/javascript'>
$(function(){
$('label').mouseup(function(){
$(this).toggleClass("checked");
});
});
</script>
</head>
<body>
<label class="label checked"><input type="checkbox" checked="checked" /> Внутри </label>
<label class="label"><input type="checkbox" />Внутри</label>
<input type="checkbox" id='n1' checked="checked" /><label class="label checked" for="n1"> Вне</label>
<input type="checkbox" id="n2" data-total="13000" /><label class="label" for="n2"> Вне</label>
</body>
</html>
|
или
$('selector').click(function(e){
e.preventDefault();
//execution ...
});
|
laimas, ты сначала посмотри как твой вариант работает... ;)
<!DOCTYPE html>
<html>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.checked {
color: red;
}
</style>
<script type='text/javascript'>
$(function(){
$('label').click(function(e){
e.preventDefault();
$(this).toggleClass("checked");
});
});
</script>
</head>
<body>
<label class="label checked"><input type="checkbox" checked="checked" /> Внутри </label>
<label class="label"><input type="checkbox" />Внутри</label>
<input type="checkbox" id='n1' checked="checked" /><label class="label checked" for="n1"> Вне</label>
<input type="checkbox" id="n2" data-total="13000" /><label class="label" for="n2"> Вне</label>
</body>
</html>
Потом его предлагай... :) |
:)
Мой вариант не для его задачи, а как предотвратить действие по умолчанию. А чтобы знать почему так происходит, пусть смотрит этот вариант:
$(function() {
$('label').click(function(e){
console.log(e.target.tagName)
});
});
|
Цитата:
|
$('ksa').click(function(e) :haha:
|
| Часовой пояс GMT +3, время: 06:16. |