TypeError: ‘assign’ called – typeError jQuery

Une erreur d’assignation (assign) a priori ?

Et comme souvent, le debugging jQuery n’est pas toujours des plus évidents quand l’erreur est remontée par la librairie jQuery elle-même.

Je ne suis pas allé dans les tréfonds de jQuery pour identifier exactement sa signification mais un coup d’oeil prolongé dans le code m’a permis de trouver le problème.

Le point de départ c’est visiblement un problème d’assignation tentée sur un objet qui n’implémente pas une interface « Location »…dont je sais pas keskecé vraiment sur le coup.

Contexte de l’erreur

Je suis au sein d’un plugin jQuery, dans une méthode publique récemment modifiée (comme par hasard) et à coup de log dans la console, je repère la ligne fautive :

Je récupérais en effet l’état (valeur) d’un composant (ici Bootstrap-switch) dont le sélecteur visé n’existait tout simplement pas dans le DOM mais notamment sur l’objet du DOM sur lequel était lancé mon plugin ($element).

Il y a de quoi être assign-é au tribunal des développeurs pour ça !

Résolution simple

Evidemment un contrôle de l’existence de l’objet en question était de rigueur

C’est cependant la première fois que je reçois cette erreur jQuery dans la console et j’avoue qu’elle m’a fait peur !

image problème assign jquery

simplu27 / Pixabay

TypeError: ‘assign’ called – typeError jQuery
5 (100%) 1 vote

Partagez cet articleShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInDigg thisShare on TumblrShare on RedditEmail this to someone

2 Comments

  1. Salut,

    Je me permet une suggestion :

    // Au lieu de faire un find, je te suggère cette écriture qui est plus légère et qui permet de se servir du contexte (second paramètre) pour débuter la recherche
    var $monObj = $('.monObj', $element);
    // Pas besoin de t'embêter avec un opérateur pour le test ternaire et je remplace le false par une collection vide ce qui garanti le type d'objet sur lequel du travail
    var $monObjFirst = $monObj.length ? $monObj.first() : $([]);
    // là tu appel normalement la méthode, si l'objet est vide, en toute logique il ne ce passera rien
    $monObjFirst.bootstrapSwitch('state')

  2. Merci pour ta suggestion Draeli, elle me semble juste !

Laisser un commentaire

© 2018 iKonenn

Theme by Anders NorénUp ↑