html - 单击复选框和调用其 '.click()' 函数有什么区别?

标签 html jquery

考虑 the following code :

HTML:

<input type='checkbox' />
<div>Click here</div>

JS:

$(function() {
    $('input').click(function() {
        document.write($(this).is(':checked') ? "checked" : "unckecked");
    });
    $('div').click(function() {
        $('input').click();
    });
});

单击复选框时,输出为选中,但如果单击“Click here”,则输出为未选中。这是为什么?

最佳答案

因为 click事件不同于 change事件,这是元素发生变化的地方。当 <div>.click()是触发 click尚未更改复选框状态的事件,因此当它选中它时,它处于以前的状态。

当您直接点击<input> ,你已经改变了状态,即使 change事件按顺序第二次触发,要点是复选框 checkedclick 之前 状态已更改处理程序正在检查它,因此状态是当前的。

如果您想要准确的状态信息,请查找并触发 change而是像这样的事件:

$(function() {
    $('input').change(function() {
        $("span").append("<br />" + (this.checked ? "Checked" : "Uncecked"));
    });
    $('div').click(function() {
        $('input').click().change();
    });
});

You can give it a try here ,这可能不是行为问题,您想要一个外部可点击区域,this is how I'd do it (通过 <label> 包装输入)。

关于html - 单击复选框和调用其 '.click()' 函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3683658/

相关文章:

javascript - 连接选择标签

javascript - 无法通过 XML 中的类属性应用 CSS

javascript - 我应该如何正确编码包含 HTML 的字符串(在 javascript 中)

html - 无法将单选按钮与标签分开

javascript - 如何向ajax传递多个值?

html - 如何让我的菜单自动缩放以适应不同的屏幕尺寸?

javascript - 如何为文本区域设置值,并使用struts2操作获取它?

javascript - 图标动画禁用我的导航栏

jquery - 对于具有自动高度和自定义上一个/下一个导航的简单 jquery slider 有什么建议吗?

javascript - 如何使用jquery的POST或GET方法返回的函数之外的数据?