jQuery 1.12版本中find()选择器语法失效问题求助
问题原因与解决方案
问题根源
jQuery从1.6版本开始明确区分了**HTML属性(attribute)和DOM属性值(property)**的处理逻辑:
- 在1.4.3中,
[checked]选择器会同时匹配两种情况:页面HTML里写了checked属性的元素,以及用户动态勾选后处于选中状态的元素。 - 升级到1.12.4后,
[checked]仅会匹配HTML代码中存在checked属性的元素,不再识别动态改变的选中状态——这就是你的find()无返回值的核心原因。
修复代码
把选择器里的[checked]替换成:checked伪类即可,修改后的代码如下:
var str = $("#fav-inst-table") .find("tr:has(td:has(input:checkbox[id^='fav_doc_']:checked))")
兼容性说明
这个修改后的写法不仅适配1.12.4,也完全兼容后续要升级的jQuery 3.x版本,无需额外调整。
内容的提问来源于stack exchange,提问作者Tim Z
相关产品推荐
相关产品推荐

