J'ai mis à jour le script ici pour donner un meilleur exemple. Pour $ header J'ai une fonction anonyme qui retourne maintenant $ ("# header"). Bien que cela fonctionne, je suis sûr que ce n'est pas efficace car il appelle $ header chaque fois qu'il est utilisé - donc c'est la même chose que d'utiliser $ ("# header") dans tout le code.Javascript Object Literals et jQuery
Ce que je veux vraiment est de stocker $ ("header") dans une variable. Lorsque j'essaye de le faire avec $ header2 (ci-dessous), il échoue. #header est rouge et non bleu.
Lorsque j'utilise Firebug à la sortie lib.page. Header2.selector $ est affiche correctement #header. Comme vous pouvez le voir, le script qui appelle lib.page.init se trouve en bas du DOM.
Des idées?
<script type="text/javascript">
var lib = {
page : {
$header : function() { return $("#header")},
$header2 : $("#header"),
init: function() {
lib.page.$header().css("background","red");
lib.page.$header2.css("background","blue");
console.log(lib.page.$header2.selector);
}
}
}
</script>
</head>
<body>
<div id="wrapper">
<div id="header">
<em>Example!</em>
</div>
</div>
<script type="text/javascript">
$(function() { lib.page.init(); });
</script>
</body>
Comment est-ce que je peux définir le littéral d'objet après que le dom est prêt? – mindwire22
Lorsque je console.log (lib.page. $ Header) dans firefox, j'obtiens un objet jQuery retourné et le sélecteur est #header. Des idées? – mindwire22
La présence de l'objet jQuery ne garantit pas qu'il est rempli avec des éléments DOM. Vous devez vérifier la longueur sur cela. En outre, déplacer tout votre javascript à la fin du document avant que la balise