Событие на 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, время: 20:04. |