1

我有两种表格,表格1和表格2;两种形式都位于同一文档或页面中。这些表格由一个复选框来区分;表单 1 有一个复选框输入元素,而表单 2 没有其中的复选框元素。

目前,我正在尝试使用以下代码测试复选框输入元素的存在:

if(jQuery(this).closest("form").find(':checkbox')){...}

当我单击表单 2 提交时,找到了复选框。

截至目前,我知道 .closest 会将上下文设置为找到的最接近的表单元素。如果正在触发没有复选框的表单2,为什么会找到表单1的复选框?

显然我误解了它是如何工作的。有人可以解释一下吗?

4

1 回答 1

1
if(jQuery(this).closest("form").find(':checkbox')){...}

我认为您的问题的原因是所有 jQuery 选择都是真实的。即使是一个空的 jQuery 选择也会传递一个if条件:

if (jQuery(false)) {
    alert('this test passes');
}

您必须检查length属性以查看是否找到任何元素:

if(jQuery(this).closest("form").find(':checkbox').length){...}

如果没有找到任何元素,length则将是0,这是一个 false-y 值,因此条件将失败。如果找到任何元素,则length将大于0,因此条件将通过。

于 2011-11-09T23:54:12.957 回答