Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery StopperProgation()未按预期工作_Javascript_Jquery - Fatal编程技术网

Javascript jquery StopperProgation()未按预期工作

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"

这是我的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"                                                                      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>