2010-03-17 8 views
1

est-ce un modèle d'utilisation JQuery valide:JQuery: NE PAS utiliser document.ready et insérer des balises HTML = est-ce autorisé?

<script type="text/javascript"> 
     $("body").prepend('<input type="hidden" id="error" value="show">');   
    </script> 

qui utilise Jquery pour manipuler/insérer des balises HTML lorsque le document n'a pas encore été chargé (par l'absence document.ready pour l'insertion dans le DOM)?

(Normalement, j'utilise uniquement document.ready, mais dans ce cas, j'ai besoin d'insérer des informations dans le DOM qui est alors présent, quand document.ready est appelé, c'est une sorte de relations "arrive-avant" Je veux atteindre pour que je suis quand shure document.ready est appelé le champ de formulaire inséré est disponible dans le document, que je dépends de cette information.

Merci beaucoup jens

Répondre

1

Vous pouvez, mais il ne fonctionnera pas toujours, comme Andrew Bezzub dit IE sera le problème (surprise, surprise)

Difficile à dire le plan directeur, mais pour votre exemple que vous pourriez tout simplement pas mettre juste immédiatement après la balise d'ouverture <body>:

document.write('<input type="hidden" id="error" value="show">'); 
1

IE peut échouer le chargement tel HTML - il a des problèmes quand quelqu'un ne modifie pas complètement les éléments rendus.Je pense que le bon choix serait de placer un tel code juste après l'étiquette

+0

Je ne sais pas pourquoi cela a été downvoted .. – Earlz

2

Oui, vous pouvez le faire, mais:

  • Vous devez placer le script quelque part après la balise de fermeture de l'élément que vous ajoutez des éléments à. Cela signifie que l'élément du corps n'est pas un bon candidat à quoi que ce soit.

  • Assurez-vous que le code HTML est valide. Si vous utilisez XHTML, vous devriez fermer l'élément d'entrée.

Tenir compte en utilisant le modèle de création d'objets au lieu de modèle innerHTML:

$("#someElement").prepend(
    $('<input/>').attr({ 'type': 'hidden', 'id': 'error' 'value': 'show' }) 
); 

Cela va créer l'élément comme un objet DOM au lieu d'utiliser innerHTML pour analyser le code HTML.

+2

Pourquoi le downvote? Si vous n'expliquez pas ce que vous n'aimez pas, c'est inutile. – Guffa

+0

Bonjour Guffa, merci beaucoup pour votre réponse !! Quel dommage que je ne peux pas diviser la "réponse-tick". J'aime vraiment vos idées et je vais chercher plus loin si cela fonctionne aussi dans IE. Votre message m'a aidé à me souvenir de la mise en œuvre interne du stockage de JQuery et je pourrais simplement utiliser cette facilité de stockage pour stagner l'état que je dois stocker. Donc merci beaucoup pour votre aide !! – jens

Questions connexes