2009-11-04 2 views
0

J'essaie d'accéder aux propriétés d'un objet de configuration à partir d'un autre objet:Accès aux propriétés d'un objet à partir d'un autre objet (JavaScript/JQuery)

var myConfigObj = { 
    $myCachedSelector: $('#mySelector') 
} 

var myObj = { 
    $selector: myConfigObj.$myCachedSelector, 
    url: 'http://www.someurl.com/somepath' 
} 

$.each([ myObj, mySecondObj, myThirdObj ], function() { 
    this.$selector.load(this.url, function(){ 
    //do something 
}); 

Lorsque vous essayez d'utiliser $ sélecteur dans la fonction each puis, il renvoie "indéfini". Les deux objets sont dans la même portée, et je ne sais pas quel est le problème.

+0

S'il vous plaît ajouter plus de code: ce qui est 'myConfigObj. $ MyCachedSelector' (peut-être c'est undefined)? Et comment utilisez-vous 'myObj. $ Selector'? – Kobi

+0

Juste mis à jour le code ci-dessus – north

Répondre

1

Ce code worked well assez pour moi, avec quelques modifications mineures:

  • Ceci est probablement le problème: Firefox se plaint le point-virgule, devrait être:

    var myConfigObj = { 
        $myCachedSelector: $('#mySelector') 
    } 
    
  • devrait être en $(document).ready, bien sûr.
  • manquant certains }); à la fin (probablement une copie/coller chose)
+0

Salut Kobi, merci pour votre réponse. C'étaient toutes des erreurs c & p :) Mais le code ne fonctionne toujours pas pour moi. Je reçois ce message d'erreur dans IE: "'this. $ Selector' est Null ou pas un objet" et encore "this. $ Selector est indéfini" dans FF ... – north

+0

Kobi, j'ai trouvé la cause des erreurs: il y avait un mauvais nom de propriété caché dans mon code. J'avais aussi une autre fonction à l'intérieur de chacun et donc 'ceci' ne pointait plus vers l'objet dom. 'Ceci' peut parfois vous rendre un peu fou ... :) – north

+0

Super, merci nord. J'ai espéré que j'ai aidé :) – Kobi

1
  1. dans Firefox Installer Firebug;
  2. Dans le volet "Scripts", définissez un point d'arrêt sur la ligne qui provoque l'erreur;
  3. Une fois arrêté au point d'arrêt, examinez le this dans le volet "Surveillance" de droite;
  4. Si l'objet this dont vous êtes arrêté a une propriété $selector qui a une méthode load alors ce n'est pas la cause de votre problème, alors continuez autour de la boucle.
  5. Lorsque l'objet thisne pas ont une propriété $selector, ou a celui qui ne dispose pas d'une méthode load, vous avez trouvé votre coupable. Déterminez maintenant pourquoi vous l'envoyez dans cette boucle ou si vous n'arrivez pas à l'initialiser.
Questions connexes