jQuery: div n’apparaît pas avant le second clic? Je le veux sur le premier. = \

Premier clic: empty floatymessage div. deuxième clic et après: travaux.

jQuery:

function floatymessage(message){ var box = $j(".floatymessage") if (box.length == 0) { $j('body').append("
"); } box.html(message); // center it box.css("left", ( $j(window).width() - box.width() ) / 2+$j(window).scrollLeft() + "px"); box.fadeIn('slow'); setTimeout(function(){$j('.floatymessage').fadeOut('slow');},3500); }

lien:

  

CSS pour floatymessoge:

 div.floatymessage { position: absolute; top: 20%; width: 300px; height: 50px; background: black; color: white; text-align: center; filter:alpha(opacity=75); -moz-opacity:0.75; -khtml-opacity: 0.75; opacity: 0.75; box-shadow: 10px 10px 5px #000; border: 1px solid black; border-bottom-left-radius: 5px 5px; border-bottom-right-radius: 5px 5px; border-top-left-radius: 5px 5px; border-top-right-radius: 5px 5px; line-height: 50px; z-index: 10000; display: none; } 

Il manquait une étape à votre logique avec box. Si ce n’est pas déjà fait, vous devez paramétrer votre variable “box” sur la nouvelle div:

 if (box.length == 0) { box = $j("
"); $j('body').append(box); }

plus loin,

Vous pouvez utiliser la méthode que vous avez configurée, mais lorsque vous utilisez une balise d’ancrage pour déclencher un événement javascript, vous devez append un retour false pour l’empêcher de le traiter comme un lien normal.

 run 

Il est recommandé de lier des événements dans ce cas:

 $j("#mine").click(function() { floatymessage('msg'); }); 

Vous pouvez obtenir le même effet en utilisant une balise span au lieu d’une balise d’ancrage qui souhaite accéder à une URL.

 run 

lier l’événement click avec jQuery

 $(function() { // after the document is loaded $j("a#someId").click(function(e){ // when the anchor is clicked (give it an ID) e.preventDefault(); floatymessage("Asking questions is not allowed."); }); });