Primeiro de tudo, se você deseja usar HTML dentro do conteúdo, defina a opção HTML como true:
$('.danger').popover({ html : true});
Então você tem duas opções para definir o conteúdo para uma Popover
- Use o atributo data-content. Esta é a opção padrão.
- Use uma função JS customizada que retorne o conteúdo HTML.
Usando conteúdo de dados : você precisa escapar do conteúdo HTML, algo como isto:
<a class='danger' data-placement='above'
data-content="<div>This is your div content</div>"
title="Title" href='#'>Click</a>
Você pode escapar do HTML manualmente ou usar uma função. Eu não sei sobre PHP, mas no Rails usamos * html_safe *.
Usando uma função JS : Se você fizer isso, terá várias opções. O mais fácil, eu acho, é ocultar o conteúdo div onde você quiser e, em seguida, escrever uma função para passar o conteúdo para popover. Algo assim:
$(document).ready(function(){
$('.danger').popover({
html : true,
content: function() {
return $('#popover_content_wrapper').html();
}
});
});
E então seu HTML fica assim:
<a class='danger' data-placement='above' title="Popover Title" href='#'>Click</a>
<div id="popover_content_wrapper" style="display: none">
<div>This is your div content</div>
</div>
Espero que ajude!
PS: Eu tive alguns problemas ao usar o popover e não definir o atributo title ... então, lembre-se de sempre definir o título.
popover_content_wrapper
, esta solução causará problemas porque está sendo renderizada em html (sem seus manipuladores). A solução é escutar o evento "insert.bs.popover" e reconectar seu manipulador ao novo elemento que está agora no DOM.Com base na resposta da jävi, isso pode ser feito sem IDs ou atributos adicionais de botões como este:
http://jsfiddle.net/isherwood/E5Ly5/
fonte
Outro método alternativo, se você deseja apenas ter a aparência de pop over. A seguir está o método Offcourse isso é uma coisa manual, mas bem viável :)
Botão HTML -
HTML - popover
JS
fonte
style="top: 200px; left: 90px;
abgform
div. Existe uma maneira de chamar o código de posicionamento automático do bootstrap? Além disso, você pode usar fadeToggle () ou apenas alternar () para diferentes efeitos no javascript.Tarde para a festa. Construindo as outras soluções. Eu precisava de uma maneira de passar o DIV de destino como uma variável . Aqui está o que eu fiz.
HTML para a fonte Popover (adicionado um atributo de dados data-pop que conterá o valor para o ID / classe DIV de destino):
HTML para conteúdo Popover (estou usando a classe de ocultação de autoinicialização):
Roteiro:
fonte
Além de outras respostas. Se você permitir as
html
opções, poderá passar ojQuery
objeto para o conteúdo, que será anexado ao conteúdo do popover com todos os eventos e ligações. Aqui está a lógica do código fonte:html
não for permitido, os dados do conteúdo serão aplicados como textohtml
permitido e os dados do conteúdo forem string, eles serão aplicados comohtml
fonte
Todas essas respostas perdem um aspecto muito importante!
Usando .html ou innerHtml ou outerHtml, você não está realmente usando o elemento referenciado. Você está usando uma cópia do html do elemento. Isso tem algumas desvantagens sérias.
O que você quer fazer é carregar o próprio objeto na popover.
https://jsfiddle.net/shrewmouse/ex6tuzm2/4/
HTML:
JQuery:
fonte
Por que tão complicado? basta colocar isso:
fonte
fonte