2009-10-02 9 views
0

Salutations,lient événement Jquery/crochets unbind et lib

J'utilise le plugin facebox popup jquery. Dans leurs JS ils ont l'événement suivant

/* 
    * Bindings 
    */ 
    $(document).bind('close.facebox', function() { 
    $(document).unbind('keydown.facebox') 
    $('#facebox').fadeOut(function() { 
     $('#facebox .content').removeClass().addClass('content') 
     hideOverlay() 
     $('#facebox .loading').remove() 
    }) 
    }) 

Il suffit de fermer la fenêtre contextuelle. Je veux accrocher un peu de mon propre code sur cette close.facebox, car test et alerte le feraient.

Donc, dans mon js sur ma page web je l'ai fait ce qui suit:

<script type="text/javascript"> 
    // listen to close action on popup 


    // submit request 
    $("#request-submit").click(function(){ 

     // Show popup 
     jQuery.facebox('something cool'); 

     // Close Popup Hook 
     $(document).bind('close.facebox', function() { 
      alert("close action"); 
     }); 

    }); 
</script> 

Il semble ok, mais le problème est que cela ne fonctionne pas parfaitement:

Le premier pop-up, les écrans d'action à proximité une alerte sur la fermeture. Dans le menu contextuel Seconde, l'action de fermeture affiche DEUX alertes. Dans la troisième fenêtre contextuelle, l'action de fermeture affiche TROIS alertes l'une après l'autre. Vous obtenez le point, il semble que l'ancien 'Query.facebox (' quelque chose de cool ');' les instances sont toujours là à l'écoute de l'événement.

Un moyen de résoudre ce problème? Merci!

Répondre

0

j'ai fait ce qui suit,

On the JS lib 

$(this).trigger('pre_close.facebox'); 

// Close alert 
$(document).bind('pre_close.facebox', function() { 
    alert("close action"); 
    $(document).unbind('pre_close.facebox'); 
}); 

Mais ce n'est pas trop bon puisque je dois pirater la valeur par défaut facebox lib.