私はTwitterのブートストラップのポップオーバーを使用しています here 。現在、ポップオーバーテキストをスクロールすると、<a>
のdata-content
属性からのテキストだけでポップオーバーが表示されます。とにかく<div>
をポップオーバーの中に入れることができるかどうか疑問に思っていました。潜在的には、そこでphpとmysqlを使用したいのですが、divを動作させることができれば、残りを理解できると思います。データコンテンツをdiv
IDに設定しようとしましたが、うまくいきませんでした。
HTML:
<a class='danger'
data-placement='above'
rel='popover'
data-content='#PopupDiv'
href='#'>Click</a>
まず、コンテンツ内でHTMLを使用する場合は、HTMLオプションをtrueに設定する必要があります。
$('.danger').popover({ html : true});
次に、ポップオーバーのコンテンツを設定する2つのオプションがあります
data-contentを使用:次のようなHTMLコンテンツをエスケープする必要があります。
<a class='danger' data-placement='above'
data-content="<div>This is your div content</div>"
title="Title" href='#'>Click</a>
HTMLを手動でエスケープするか、関数を使用できます。 PHPについては知りませんが、Railsでは* html_safe *を使用します。
JS関数を使用:これを行う場合、いくつかのオプションがあります。最も簡単だと思うのは、divコンテンツを好きな場所に隠してから、そのコンテンツをポップオーバーに渡す関数を書くことです。このようなもの:
$(document).ready(function(){
$('.danger').popover({
html : true,
content: function() {
return $('#popover_content_wrapper').html();
}
});
});
そして、HTMLは次のようになります。
<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>
それが役に立てば幸い!
PS:ポップオーバーを使用してタイトル属性を設定しないと、いくつかの問題が発生しました...なので、常にタイトルを設定することを忘れないでください。
Jäviの答えに基づいて、これはIDや次のような追加のボタン属性なしで実行できます。
http://jsfiddle.net/isherwood/E5Ly5/
<button class="popper" data-toggle="popover">Pop me</button>
<div class="popper-content hide">My first popover content goes here.</div>
<button class="popper" data-toggle="popover">Pop me</button>
<div class="popper-content hide">My second popover content goes here.</div>
<button class="popper" data-toggle="popover">Pop me</button>
<div class="popper-content hide">My third popover content goes here.</div>
$('.popper').popover({
container: 'body',
html: true,
content: function () {
return $(this).next('.popper-content').html();
}
});
ポップオーバーのルックアンドフィールを持ちたい場合の別の代替方法。以下がその方法です。オフコースこれは手作業ですが、うまく機能します:)
HTML-ボタン
<button class="btn btn-info btn-small" style="margin-right:5px;" id="bg" data-placement='bottom' rel="tooltip" title="Background Image"><i class="icon-picture icon-white"></i></button>
HTML-ポップオーバー
<div class="bgform popover fade bottom in">
<div class="arrow"></div>
..... your code here .......
</div>
JS
$("#bg").click(function(){
$('.bgform').slideToggle();
});
パーティーに遅れて。他のソリューションの構築。ターゲットDIVを変数として渡す方法が必要でした。これが私がしたことです。
PopoverソースのHTML(データ属性data-popを追加し、宛先DIV idまたはクラスの値を保持します):
<div data-html="true" data-toggle="popover" data-pop="popper-content" class="popper">
Popoverコンテンツ用のHTML(bootstrap hideクラスを使用しています):
<div id="popper-content" class="hide">Content goes here</div>
スクリプト:
$('.popper').popover({
placement: popover_placement,
container: 'div.page-content',
html: true,
trigger: 'hover',
content: function () {
var pop_dest = $(this).attr("data-pop");
//console.log(plant);
return $("#"+pop_dest).html();
}});
他の返信に加えて。オプションでhtml
を許可すると、jQuery
オブジェクトをコンテンツに渡すことができ、すべてのイベントとバインディングでポップオーバーのコンテンツに追加されます。ソースコードのロジックは次のとおりです。
html
が許可されていない場合、コンテンツデータはテキストとして適用されますhtml
が許可され、コンテンツデータが文字列の場合、html
として適用されます$("#popover-button").popover({
content: $("#popover-content"),
html: true,
title: "Popover title"
});
これらの答えはすべて非常に重要な側面を見逃しています!
.htmlまたはinnerHtmlまたはouterHtmlを使用することにより、実際に参照要素を使用することはありません。要素のhtmlのコピーを使用しています。これには深刻な欠点があります。
やりたいことは、オブジェクト自体をポップオーバーにロードすることです。
https://jsfiddle.net/shrewmouse/ex6tuzm2/4/
HTML:
<h1> Test </h1>
<div><button id="target">click me</button></div>
<!-- This will be the contents of our popover -->
<div class='_content' id='blah'>
<h1>Extra Stuff</h1>
<input type='number' placeholder='number'/>
</div>
JQuery:
$(document).ready(function() {
// We don't want to see the popover contents until the user clicks the target.
// If you don't hide 'blah' first it will be visible outside of the popover.
//
$('#blah').hide();
// Initialize our popover
//
$('#target').popover({
content: $('#blah'), // set the content to be the 'blah' div
placement: 'bottom',
html: true
});
// The popover contents will not be set until the popover is shown. Since we don't
// want to see the popover when the page loads, we will show it then hide it.
//
$('#target').popover('show');
$('#target').popover('hide');
// Now that the popover's content is the 'blah' dive we can make it visisble again.
//
$('#blah').show();
});
なぜそんなに複雑なのですか?これを置いてください:
data-html='true'