jQuery .find()可以按ID查找,但不能按类查找

时间:2018-06-22 16:55:33

标签: javascript jquery css

我已经使用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的.find()而不是按类使用吗?我尝试用this post来解决这个问题,但无法正常工作。

1 个答案:

答案 0 :(得分:4)

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

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

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