Pourquoi suis-je recevoir Uncaught TypeError: Object # n'a pas de méthode « trouver »?
-
09-10-2019 - |
Question
Pourquoi ai-je:
Uncaught TypeError: Object # n'a pas de méthode « Trouver » (anonyme fonction): 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
lorsque je tente de lancer un simple script jquery Le script tombe à la ligne où j'utilise la méthode de recherche dans l'extrait de code suivant 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>');
});
});
Dans ma balise head dans le code HTML je:
<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>
J'utilise Google Chrome (avec les outils de développement).
Tout ce que je trouve comme une explication dans un autre thread est que lorsque vous utilisez les outils de développement de Chrome, le problème se pose. Mais je courais le code sans utiliser les outils de développement et le même produit (le script ne fait rien => l'erreur).
Cordialement,
Despot
La solution
Lorsque vous [0]
vous obtenez le premier élément les matches de sélection comme un élément DOM, pas un objet jQuery qui a .find()
, il suffit de retirer ce [0]
, comme ceci:
$(document).ready(function(){
$("#p_sizesId").change(function(){
$("#p_colorsId").find('option').remove().end().append('<option selected="selected" value="whatever">text</option>');
});
});
Quelques autres notes, lors de l'utilisation d'un sélecteur de #id
, faites-le préfixe pas, sauf si absolument nécessaire, il ralentit les choses. En outre, depuis les ID doivent être uniques, il devrait pas besoin pour obtenir le premier élément ... le sélecteur ne doit correspondre à 1 ou 0 éléments ... s'ils sont pas unique ne pas utiliser ID ... cours d'utilisation.
Autres conseils
Il suffit d'en faire un objet jQuery comme ceci:
$($("select#p_colorsId")[0]).find('option')