jquery - 为什么我会收到 Uncaught TypeError : Object #<an HTMLSelectElement> has no method 'find' ?

标签 jquery google-chrome typeerror methodnotfound

为什么我会得到:

Uncaught TypeError: Object # has no method 'find' (anonymous function):8080/twolittlesheep/js/sizeColorDependancy.js:16 c.event.handleajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:63 c.event.add.h.handle.oajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:56

当我尝试运行一个简单的 jQuery 脚本时?该脚本位于我在下一个 jquery 代码片段中使用 find 方法的行:

$(document).ready(function(){
  $("select#p_sizesId").change(function(){
   var $colorsSelect = $("select#p_colorsId")[0];
   $("select#p_colorsId")[0].find('option').remove().end().append('<option selected="selected" value="whatever">text</option>');
  });
});

在 html 的 head 标签中,我有:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<%-- <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script> --%>
<script type="text/javascript" src="js/sizeColorDependancy.js"></script>

我正在使用 Google Chrome(连同开发者工具)。

我在另一个线程中找到的解释是,当使用 Chrome 的开发人员工具时,会出现问题。但我在没有使用开发人员工具的情况下运行代码,并且发生了同样的情况(脚本没有执行任何操作 => 发生了错误)。

最佳答案

当您执行[0]时,您将从选择器中获取第一个元素作为DOM元素匹配,而不是具有.find的jQuery对象(),只需删除[0],如下所示:

$(document).ready(function(){
  $("#p_sizesId").change(function(){
   $("#p_colorsId").find('option').remove().end().append('<option selected="selected" value="whatever">text</option>');
  });
});

其他一些注意事项,当使用 #id 选择器时,除非绝对需要,否则不要为其添加前缀,否则会减慢速度。此外,由于 ID 应该是唯一的,因此应该不需要获取第一个元素。选择器应该只匹配 1 或 0 个元素。如果它们唯一,请不要使用ID,而是使用

关于jquery - 为什么我会收到 Uncaught TypeError : Object #<an HTMLSelectElement> has no method 'find' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376884/

相关文章:

javascript - 使用 tablesorter 对 TR block 进行排序

jquery - 下拉菜单 CSS 或 jQuery

google-chrome - 在 Chrome 中,如何查看正在发出的 AJAX 请求?

javascript - 如何修改我的代码以在所有类型的浏览器中执行?

typeerror - elm-lang 错误 `(==) is expecting the right side to be a:`

jquery - 每个 child 单独上课

jquery datatables::对数据进行降序排序

javascript - for of 循环querySelectorAll

angular2 TypeError : self. _el_11 不是函数

python - super() 为新式类引发 "TypeError: must be type, not classobj"