Почему я получаю Uncaught TypeError: У объекта #<HTMLSelectElement> нет метода 'find'?

Почему я получаю:

Uncaught TypeError: У объекта # нет метода 'find' (анонимная функция):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? Сценарий попадает в строку, где я использую метод find в следующем фрагменте кода jquery:

$(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 у меня есть:

<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 возникает проблема. Но я выполнял код без использования Инструментов разработчика, и произошло то же самое (скрипт ничего не сделал => произошла ошибка).

С уважением,
деспот

2 ответа

Решение

Когда вы делаете [0] вы получаете первый элемент, соответствующий селектору как элемент DOM, а не объект jQuery, который имеет .find() Просто удали это [0], как это:

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

Несколько других заметок при использовании #id Селектор, не используйте префикс, если в этом нет крайней необходимости, он замедляет работу. Также, поскольку идентификаторы должны быть уникальными, не нужно получать первый элемент... селектор должен соответствовать только 1 или 0 элементам... если они не уникальны, не используйте идентификаторы... используйте классы.

Просто превратите его в объект jQuery, например так:

$($("select#p_colorsId")[0]).find('option')
Другие вопросы по тегам