首页 > 解决方案 > JQuery .find() 可以按 id 查找,但不能按类查找

问题描述

我使用 Jquery 创建了以下 DOM:

<div id="d0" class="choiceDiv">
    <input type="checkbox" id="cb0" class=".userCheckBox" value="Option 1" checked="checked">
    <input type="hidden" id="h0" class=".userCheckBoxHidden" value="true">
    <label for="cb0">Option 1</label>
</div>

我已经将 CSS 标记应用于 DOM 中的元素,通过 CSS 类此时它们内部没有任何属性。

一个 div 中大约有 17 个。加载页面后,我想重新加载每个复选框的当前选中值。当我遍历每个代码时,我尝试在 DOM 上使用 .find() 函数:

$('.choiceDiv').each(function(e){

当我尝试按类查找时,

$(this).find('.userCheckBox');

我得到以下失败对象:

init [prevObject: init(1), context: div#d0.choiceDiv, selector: ".userCheckBox"]
context: div#d0.choiceDiv
length: 0
prevObject:init [div#d0.choiceDiv, context: div#d0.choiceDiv]
selector:".userCheckBox"
__proto__:Object(0)

当我尝试通过 ID 查找时,

$(this).find('#cb'+e)[0];

我得到了我正在寻找的东西:

<input type="checkbox" id="cb0" class=".userCheckBox" value="Option 1" checked="checked">

我希望按类提取对象,以确保我总是得到我正在寻找的输入类型。有人可以解释为什么在这种情况下我可以使用带有 ID 而不是 Class 的 .find() 吗?我试图通过这篇文章弄清楚它,但无法让它发挥作用。

标签: javascriptjquerycss

解决方案


只需从类属性中删除句点即可。例如:

<input type="checkbox" id="cb0" class="userCheckBox" value="Option 1" checked="checked">

可以通过.find('.userCheckBox')或找到.find('#cb0')


推荐阅读