检测元素外部的单击,检查是否选中了复选框,然后触发单击

时间:2016-10-14 04:43:00

标签: javascript jquery html css jquery-ui

这是我的HTML代码:

<input class="menu-btn" type="checkbox" id="menu-btn" />

这是我的javascript代码:

$(document).ready(function() {
    $(document).click(function(event) { //line 1
        if(!$(event.target).closest('#menu').length) { //line 2
            if($('.menu-btn').is(':checked')) { //line 3
                $('#menu-btn').trigger('click'); //line 4
            }
        }        
    })
})

第1行有效,第2行有效,第3行无效,也不允许我选中复选框。那是为什么?

编辑:这是我尝试做的事情:

第1行是检测是否有点击。第2行是检测点击是否在#menu之外,第3行是检查menu-btn是否被勾选。如果已选中,则第4行将触发menu-btn click。问题是第3行不允许我选中当前未选中的复选框。

2 个答案:

答案 0 :(得分:0)

您可以使用道具来检查复选框,而不是在$('#menu-btn').prop('checked', 'checked');上触发点击事件,并使用$('#menu-btn').prop('checked', false);取消选中

切换代码:

$(document).ready(function() {
    $(document).click(function(event) { //line 1
        if(!$(event.target).closest('#menu').length) { //line 2
            if(!$('#menu-btn').prop('checked')) { //line 3
                $('#menu-btn').prop('checked', 'checked'); //line 4
            } else {
                $('#menu-btn').prop('checked', false);
            }
        }        
    })
})

答案 1 :(得分:0)

尝试此切换代码:

    .data
isalpha:
    .byte   0:65
    .byte   1:26
    .byte   0:6
    .byte   1:26
    .byte   0:133

    .text
    la      $s0,isalpha             # get lookup table address

function:
    # increment $t0 to next char of input

    addu    $t1,$s0,$t0             # index into lookup table
    lb      $t1,0($t1)              # get lookup table value
    beqz    $t1,function            # is char one we want? if no, loop

continue:
    # ...
    j       function