Javascript jquery StopperProgation()未按预期工作
这是我的html:Javascript jquery StopperProgation()未按预期工作,javascript,jquery,Javascript,Jquery,这是我的html: <span class="checkbox checked replacement" tabindex="0"> <span class="check-knob"></span> <input type="checkbox" name="data[InfoPagesClient][3][info_page_id]" value="25"
<span class="checkbox checked replacement" tabindex="0">
<span class="check-knob"></span>
<input type="checkbox" name="data[InfoPagesClient][3][info_page_id]" value="25" checked="checked" class="">
</span>
<label for="InfoPagesClient3InfoPageId" class="label">asdasd</label>
点击标签它将跨越点击事件并打印控制台值。。。我试着使用e.stopPropogation()和stoppimmediatepropogation()。。但是它不起作用
有什么想法吗 e.StoppPropogation()或e.stopImmediatePropogation()将阻止事件冒泡,但不会立即停止事件
您可以将e.preventDefault()与e.StopperProgation()一起使用。e、 preventDefault()将阻止默认事件发生。您可以检查代码中的以下更改
$("p.checkbox-group span.checkbox").on('click', function(e){
e.preventDefault();
e.stopPropagation();
if($(this).hasClass('checked')) {
$(imgId).hide();
} else {
console.log('aaaaaaaaaaa');
$(imgId).show();
}
});
$("label.label").on('click', function(e) {
e.preventDefault();
e.stopPropagation();
if ($(this).siblings('span.checkbox').hasClass('checked')) {
$(imgId).hide();
} else {
$(imgId).show();
}
});
当您将
标签
与一起用于
时,浏览器将自动单击触发“单击”事件的关联控件。在您使用e.stopImmediatePropagation()时,这是稍后触发的另一个事件代码>,它只是停止当前的“单击”事件,并且对随后触发的相关控件的事件没有影响
要解决您的问题,请尝试删除的for
使用以下命令:
<label class="label">asdasd</label>
asdasd
而不是:
<label for="InfoPagesClient3InfoPageId" class="label">asdasd</label>
asdasd
如果将id
属性添加到复选框中,则标签将起作用。然后,您可以将代码简化如下:
$(函数(){
$(“p.checkbox-group输入[type=checkbox]”)。在('change',function(){
如果(选中此项){
$(this).parent().addClass('checked').sides('a.edit-content').hide();
}否则{
$(this).parent().removeClass('checked').sides('a.edit-content').show();
}
});
});
嗯,这不是一个功能而不是一个bug吗?点击标签不应该触发与点击“复选框”相同的动作吗?我想这正是使用for
属性的原因
<label for="InfoPagesClient3InfoPageId" class="label">asdasd</label>