2015-08-29 1 views
-1

Je voudrais faire une superposition lorsque les utilisations font un événement hover sur un lien.
Cette partie ok, la superposition créée et tout va bien.
Mais je voudrais également supprimer cette superposition, lorsque l'utilisateur clique (ou passe la souris) pour cela, et cette partie crée un bug étrange.
J'essaie de cliquer pour la superposition et sa fermeture ne se ferme pas, rien ne se passe, mais si vous collez un script sur la console chromée, cela fonctionne très bien. Js, première partie, ajouter un script:
Comment est-il possible que jQuery fonctionne sur la console Chrome, mais pas lui-même?

var overlay = jQuery('<div class="overlay"> </div>'); 
     $("#link-'.$myqlVideoID.'").hover(function() { 
       $("#hover-").attr("src","http://youtube.com/embed/'.$myqlVideoID.'?autoplay=1"); 
       $(".drop-target").css("background-color","#070707"); 
       $(".drop-target").css("padding","11px"); 
       $(".drop-target").css("margin-bottom","16px"); 
       $(".drop-target").show().fadeIn("3000"); 
        overlay.appendTo(document.body) 
      }); 

Et la deuxième partie, retirez overlay:

$(document).ready(function() { 
    $(".overlay").click(function() { 
     $("#hover-").removeAttr("src"); 
     $(".drop-target").hide().fadeOut("3000"); 
     $(".overlay").remove(); 
     console.log("clicked"); 
    }); 
    }); 

Mon site est l'endroit où vous pouvez voir le bug:
http://neocsatblog.mblx.hu/search/
recherche Juste quelque chose et faites défiler jusqu'à "Cimkék"

+0

Eh bien les premières choses d'abord sur votre overlay couvre déjà votre page ... et vos liens et tout le reste. – kurt

+0

Nous devons également voir le HTML et le CSS. L'information pour votre question doit être ** dans ** la question, pas seulement liée. Les liens externes ont l'habitude de changer avec le temps, rendant la question inutile aux autres à l'avenir. Si la question ne peut pas être répondue sans utiliser le lien, elle n'appartient pas à SO dans sa forme actuelle. –

+0

utilisez .on ('click',,) et .on ('hover',,) au lieu de .click() et .hover() –

Répondre

0

Essayez de déléguer l'événement sur la superposition en écrivant ce qui suit: $(document).on('click', '.overlay', function() { //The rest of your code }) ;

Et même pour le reste de vos gestionnaires d'événements.

La raison en est que l'élément overlay est ajouté dynamiquement, et le script ne le sait pas au moment où il est instancié.

+0

Ahh, merci vous avez raison qui m'a travaillé :) – InBug

+0

Merci. J'ai fait une mise à jour ci-dessus. L'idée est que vous cliquez sur une superposition, pas sur le document, et que vous devriez déléguer l'événement à l'élément de superposition –

+0

Thx pour éditer! S'il vous plaît changer l'ID à la classe (la page ne me laisse pas cette petite modification) – InBug