web-dev-qa-db-fra.com

Comment charger un script jQuery en dernier?

Comment faire pour que cela se charge en dernier?

 <script type="text/javascript">
  jQuery(document).ready(function(){
   jQuery("div.domTip_tipBody").mouseover(function(){
   jQuery("#yyy a.tippy_link").css("background-color","yellow");});  

   jQuery("div.domTip_tipBody").mouseout(function(){
   jQuery("#yyy a.tippy_link").css("background-color","red");
 }); 
 });  
 </script>

Il est en cours d'exécution avant que "div.domTip_tipBody" ne soit en cours d'exécution (généré par un shortcode), il ne se passe donc rien.

J'ai essayé:

<script src="script.js" type="text/javascript" defer="defer"></script>

dans mon header.php avant

</head> 

mais ça n'aide pas.

Vous avez vu "window.onload =" mais vous ne savez pas comment l'appliquer.

Toute idée est appréciée.

Merci

2
xyz
add_action('wp_footer','myscript_in_footer');
function myscript_in_footer(){
?>
<script type="text/javascript">
  jQuery(document).ready(function(){
   jQuery("div.domTip_tipBody").mouseover(function(){
   jQuery("#yyy a.tippy_link").css("background-color","yellow");});  

   jQuery("div.domTip_tipBody").mouseout(function(){
   jQuery("#yyy a.tippy_link").css("background-color","red");
 }); 
 });  
 </script>
<?php
}
0
Rajeev Vyas
  1. Placez le code dans un fichier nommé your_name.js.
  2. Ajoutez les éléments suivants à votre fichier functions.php:

    function wpse47618_load_script_last()
    {
        wp_enqueue_script( 'zzz_your_name', get_stylesheet_directory_uri().'your_name.js', array( 'jquery' ), '0', true );
    }
    add_action( 'wp_enqueue_scripts', 'wpse47618_load_script_last', 99999 );
    
  3. Vérifiez le code source de vos pages si le script a été ajouté avec succès et si le chemin d'accès au fichier est correct. Si vous utilisez FireBug ou d'autres outils de développement, cliquez sur le nom du fichier pour voir si le contenu du script s'y trouve.
  4. Vous avez terminé.
5
kaiser

Cela ressemble à un problème de délégation d'événements jQuery. Si les nouveaux éléments DOM sont ajoutés après le chargement de la page, jQuery ne les lira pas. Vous devez donc dire à jQuery d'avance de lier un événement si un tel élément existe maintenant ou dans le futur.

essayez $.delegate('div.domTip_tipBody','mouseover', function(e){ jQuery("#yyy a.tippy_link").css("background-color","yellow");}); });

Voir http://api.jquery.com/delegate/ , http://lab.distilldesign.com/event-delegation/

1
rashid

Vous pouvez simplement ajouter le script à footer.php et cela fonctionnera probablement, mais ce n’est pas le meilleur moyen d’éviter les conflits jQuery.

Le meilleur moyen est de mettre le script en file d'attente à partir d'un fichier séparé. Voir http://codex.wordpress.org/Function_Reference/wp_enqueue_script qui a un paramètre pour charger les scripts dans le pied de page via wp_footer.

Et consultez le Guide du développeur JavaScript et CSS sans conflit avec Word Dans WordPress: http://wp.smashingmagazine.com/2011/10/12/developers-guide-conflict-free-javascript-css-wordpress/

0
markratledge

Cela pourrait être un "peu" en retard, mais juste au cas où quelqu'un cherche encore:

http://css-tricks.com/snippets/jquery/run-javascript-only-after-entire-page-has-loaded/

Un moyen simple et agréable de le faire!

0
Sam