使用jQuery选择div内无ID的form元素时报错,求解决方案
解决方案:解决
$(...).find is not a function错误并选中div内的form元素 这个报错我之前也碰到过,核心原因是你通过$('#some_id')获取到的不是jQuery对象,所以调用不了jQuery的find()方法。咱们一步步排查解决:
1. 先确认jQuery是否正确引入
这是最常见的触发原因:
- 检查你的HTML页面中,是否在自定义JS代码之前引入了jQuery库,比如:
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <!-- 你的自定义JS代码放在这里 --> - 如果已经引入了jQuery,但
$被其他库(比如Prototype、Zepto)占用了,你可以改用jQuery关键字代替$:
或者开启jQuery的noConflict模式,自定义一个专属别名:jQuery('#some_id').find('form');var $j = jQuery.noConflict(); $j('#some_id').find('form');
2. 用原生JavaScript直接选中form元素
如果不想依赖jQuery,也可以用原生DOM API实现同样的效果,代码更轻量:
// 方法1:用querySelector精准匹配 document.getElementById('some_id').querySelector('form'); // 方法2:用getElementsByTagName获取集合后取第一个 document.getElementById('some_id').getElementsByTagName('form')[0];
3. 纠正错误的选择器写法
你提到的$('#some_id:form')是错误的选择器语法,正确的后代选择器写法应该是:
// 直接用jQuery后代选择器定位 $('#some_id form');
另外补充一点:如果你的代码是在DOM还没加载完成时执行的,也可能导致获取不到元素,这时候需要把代码放在DOM加载完成的回调里(jQuery可以用$(document).ready()):
$(document).ready(function() { $('#some_id').find('form'); });
内容的提问来源于stack exchange,提问作者Yar
相关产品推荐
相关产品推荐

