Почему я получаю Uncaught TypeError: Object #не имеет метода "найти"? - PullRequest
1 голос
/ 07 декабря 2010

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

Uncaught TypeError: У объекта # нет метода 'найти' (анонимный функция): 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 ]

6 голосов
/ 07 декабря 2010

Когда вы делаете [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 элементам ... если они не уникальные, не используйте идентификаторы ... используйте классы.

1 голос
/ 29 августа 2013

Просто превратите его в объект jQuery следующим образом:

$($("select#p_colorsId")[0]).find('option')
...