2011-10-05 13 views
12

Sto usando la funzione popover da Bootstrap js di Twitter. Ho un pulsante che, se cliccato, esegue questo javascript:Quando si utilizza Bootstrap di Twitter, come posso modificare il contenuto di un popover?

$("#popover_anchor").popover({trigger: "manual", 
           placement: "below", 
           offset: 10, 
           html: true, 
           title: function(){return "TITLE";}, 
           content: function(){return "CONTENT TEXT";}}); 
$("#popover_anchor").popover("show"); 

C'è anche un altro pulsante che esegue fondamentalmente la stessa javascript, tranne che le funzioni titolo e il contenuto restituiscono testo diverso.

Si noti che entrambi definiscono il popover sullo stesso elemento, solo con contenuti diversi.

Il problema è che, una volta che si fa clic su entrambi i pulsanti e si esegue js, nessun successivo clic dall'altro pulsante cambierà il contenuto del popover. Quindi, una volta inizializzato il popover, come posso aggiornare/modificare il contenuto?

risposta

16

lo scopo dell'attributo title è accettare un valore di tipo function che fornisce questa funzionalità.

per esempio: se si imposta il titolo:

title: function() { return randomTxt(); } 

e si dispone,

function randomTxt() 
{ 
    arr = ['blah blah', 'meh', 'another one']; 
    return arr[Math.floor(Math.random() * 4)]; 
} 

si può mantenere sempre un titolo diverso per la vostra popover. Spetta a te modificare la logica di randomText per recuperare un titolo dinamicamente.

+1

Quindi, invece di reinizializzare il popover, dovrei semplicemente assegnare una funzione diversa agli attributi titolo/contenuto? – brentmc79

6

È possibile farlo accedendo dati di istanza popover direttamente come spiegato qui:
https://github.com/twbs/bootstrap/issues/813

Questo esempio è tratto dalla pagina lnked:

var myPopover = $('#element').data('popover') 
myPopover.options.someOption = 'foo' 
0

Ecco la soluzione che ho detto proprio lì:

Bootstrap popover content cannot changed dynamically

var popover = $('#exemple').data('bs.popover'); 
popover.options.content = "YOUR NEW TEXT"; 

popover è un oggetto se vuoi saperne di più, prova a fare console.log (popover) dopo averlo definito per vedere come puoi usarlo dopo!

Problemi correlati