2012-12-17 8 views
8

Sto caricando html utilizzando ajax chiamata, questa html ha Bootstrap Collapse. Il problema è Il collasso non funziona, se si fa clic si espande ma non si comprime nuovamente.Come fare Twitter Bootstrap lavoro Collapse su html caricate dinamicamente utilizzando Ajax

Per verificare se sto facendo qualcosa di sbagliato, ho messo lo stesso codice su una pagina statica (non caricato utilizzando Ajax) e funziona bene. Quindi sembra problematico solo con l'html caricato dinamicamente.

Ho provato manualmente consentendo Chiudi usando

$(".collapse").collapse() 

ma ancora lo stesso problema.

Credo che ho bisogno di usare live()/on() metodi di jQuery, perché il codice HTML è dinamico, ma non sapete come posso fare per chiamare $(".collapse").collapse() perché penso che funziona solo su eventi o è qualcos'altro che devo fare?

+1

perché non si chiama '$ (" collasso"). Collasso()' all'interno fnction successo del ajax dopo l'html dinamico viene aggiunto .. – bipen

+0

Si prega di mostrare il vostro codice. – mccannf

+2

La compressione sembra funzionare con il contenuto caricato da una richiesta Ajax. Ho fatto un semplice test di jsfiddle: http://jsfiddle.net/QVsse/3/. Se per qualche motivo non funziona, ti suggerisco di consultare i consigli sui bipen e di chiamare il collasso() nella funzione di callback della tua chiamata ajax. – Leif

risposta

5

vorrei suggerire di chiamare

$(".collapse").collapse() 

all'interno la funzione del successo del ajax dopo l'html dinamica viene aggiunto.

3

Il mio risolvere è:

$('.collapse').on('show', function() { 
    var $this = $(this); 
    if($this.attr('data-href')) 
    { 
     $this.html($.getJSON($this.attr('data-href'),function(data){ 
      $this.html(data.html); 
      $this.removeAttr('style'); 
     })); 
    } 
    }) 
+0

Ho provato la stessa cosa che hai menzionato sopra, Non sono in grado di farlo funzionare. Si è espanso correttamente ma poi ha fatto di nuovo clic, non collassa in firefox. Puoi aiutarmi a risolverlo? –

1

Basta eseguire questo su evento di successo ajax.

$('[data-toggle="collapse"]').click(function(e){ 
     e.preventDefault(); 
     var target_element= $(this).attr("href"); 
     $(target_element).collapse('toggle'); 
     return false; 
}); 
Problemi correlati