2012-05-02 10 views
7

apro la comparsa chiamandocolorbox bug - vicino colorbox da un collegamento o un pulsante

$.colorbox({ href: "notification.aspx" }); 

In notification.aspx ho

<script type="text/javascript" src="/scripts/colorbox/jquery.colorbox-min.js"></script> 
... 
<a id="btnClose">OK</a> 

Il popup è stato mostrato bene, ma quando clicco sul pulsante dà un errore JavaScript.

in javascript della pagina principale che ho

$('#btnClose').live('click', function() { 
    alert('closing...'); // Alert shown as expected 
    $.colorbox.close(); // Nothing happens, no JavaScript error 
    //$.fn.colorbox.close(); // same 
    //parent.$.fn.colorbox.close(); // same 
    //$.colorbox.remove(); // same 
    //$('#cboxClose').click(); // same 
    //$('#cboxOverlay').click(); // same 
}); 

Sto solo cercando di chiudere il popup.

Cosa mi manca? Grazie in anticipo.

EDIT: L'ho fatto funzionare in qualche modo, scoprirò cosa ha funzionato.

risposta

16

$.colorbox.close() è il modo corretto per chiudere colorbox, non ascoltare questi altri commenti. Il problema è che si sta caricando colorbox una seconda volta. Rimuovere il blocco di script jquery.colorbox.js da notification.aspx.

+0

Ciao Jack, grazie, ma se lo rimuovo da notification.aspx, direi $ .colorbox non è definito – Aximili

+0

E perché è così? Stai caricando più versioni di jQuery? Stai facendo qualcosa che non dovresti essere, poi rimediare al problema semplicemente caricando di nuovo le librerie. Scopri perché $ .colorbox non è definito e risolvilo. – Jack

+2

Questo è tutto !! Non ho realizzato compreso jquery due volte !! Grazie Jack! – Aximili

0

In notification.aspx si dovrebbe avere

<a id="btnClose" href="javascript:closeBox();">OK</a> 

in javascript della pagina principale si dovrebbe avere

<script type="text/javascript" src="/scripts/colorbox/jquery.colorbox-min.js"></script> 
... 
function closeBox() { 
    $.colorbox.close(); 
} 
+0

Ho provato a mettere questo nella pagina popup, stessa cosa. Ma grazie comunque – Aximili

+0

Stessa cosa, non succede nulla :(Se metto return false, reindirizza a una pagina vuota con il testo "false" .Nota che sto già chiamando correttamente la funzione perché l'avviso funziona bene. Devo solo chiudere la scatola dei colori – Aximili

+0

Sfortunatamente senza vedere altro del codice, non so cosa dirti. Probabilmente è un problema con il file .js caricato nel file sbagliato e/o il codice viene eseguito in modo improprio con il plugin .. –

1
$(document).ready(function(){ 

$.colorbox({ 

       inline:true, 
       href:'notification.aspx', 

       onClosed:function(){ alert('closing');     

        $.colorbox.remove(); 
       } 
      }); 
    }); 
+0

I provato anche questo ... niente funziona è molto strano ... grazie comunque! – Aximili

+0

Puoi controllare il mio aggiornamento – coolguy

+0

dare il tuo pulsante di chiusura id = 'cboxClose' e provare questo codice – coolguy

1

grazie a tutti per i vostri commenti.

Questo è davvero strano, ma dopo armeggiare intorno Ho trovato questo lo fa

$('#btnClose').live('click', function() { 
    $.colorbox.remove(); // You have to remove it first (don't know why) 
    $('#cboxClose').click(); // Then this will close the box, $.colorbox.close() still doesn't work 
    $.colorbox.init(); // Re-init, otherwise colorbox stops working 
}); 

Speranza che aiuta qualcuno.

MODIFICA: Anche se è stato risolto il problema, la causa del problema è stata inclusa jquery due volte! (Grazie Jack)

+0

Vedere la mia risposta alla tua domanda. modo molto inefficiente di gestire le cose – Jack

14

Prova

<a href='#' onclick='parent.$.colorbox.close(); return false;'>Close</a> 
+0

Questo è quello che ti serve se stai usando .iframe in colorbox. . Genitore $ colorbox.close().; Grazie! – jasonflaherty

0

Questo può aiutare qualcuno .Ho hanno creato un pulsante di chiusura personalizzato. Il mio pulsante di chiusura personalizzato sta arrivando in alto a destra e può anche chiuderlo. Il mio codice:

 jQuery(document).ready(function(){ 
     jQuery('<div id="close" style="cursor: pointer; position: absolute; top: 0; right: 30px;"><img src="../img/close.png" alt="close"/></div>').appendTo('.yourparentDiv'); 

     $("#close").click(function() { 
      jQuery('#cboxClose').click(); 
     }); 
    }); 

mi stava affrontando problema alla chiusura della colorbox. Mi ha aiutato.

0

Questo mi ha aiutato

// 3. Gestire la finestra di dialogo pulsante di annullamento:

$("#CancelDeleteButton").click(function() 
{ 
$.fn.colorbox.close(); 
    return false; 
}); 
0

la maggior parte delle risposte funzionano se si hanno le seguenti condizioni: 1. genitore e figlio sullo stesso dominio 2.bambino ha JQuery

nel caso in cui si desidera chiudere la casella del bambino e si dispone di una di queste due condizioni effettuare le seguenti operazioni:

nel genitore fare questo:

$('document').ready(
    function() { 
     window.addEventListener("message", function (event) { 
      $.colorbox.close(); 

     }); 
    }); 

nel bambino aggiungere una pulsante di chiusura con il seguente js su click

<input type="button" value="close" onclick="parent.postMessage('child frame', '*');" />