Как я могу использовать "div" в Twitter Popover с несколькими кнопками?
Это решение подходит для случаев с одной кнопкой: Возможно ли использовать div как контент для Popover Twitter?
Но на моей странице у меня есть куча popovers (скажем, 50-100).
Поэтому мне нужно изменить это решение.
Это решение wa @jävi:
$(document).ready(function(){
$('.danger').popover({
html : true,
content: function() {
return $('#popover_content_wrapper').html();
}
});
});
Каждая из моих кнопок имеет свой собственный идентификатор.
<a class='danger' data-placement='above' title="Popover Title" href='#'>Click</a>
<div id="popover_div1" style="display: none">
<div>This is your div content</div>
</div>
<a class='danger' data-placement='above' title="Popover Title" href='#'>Click</a>
<div id="popover_div2" style="display: none">
<div>This is your div content</div>
</div>
Итак, как я могу переписать этот фрагмент кода javascript, чтобы охватить все мои кнопки?
Ответы
Ответ 1
Просто сражался с этим сам. Вам нужно поместить идентификатор в элемент, который запускает popover. Используйте атрибут пользовательских данных, например, так называемый "data-id":
<a class='danger' data-id="popover_div1" data-placement='above' title="Popover Title" href='#'>Click</a>
Затем вы можете немного изменить свой javascript, чтобы программно получить значение атрибута id файла:
$(document).ready(function(){
$('.danger').popover({
html : true,
content: function() {
return $($(this).attr('data-id')).html();
}
});
});
Ответ 2
Если вы не хотите загрязнять исходный элемент другим атрибутом data-*
, вот простой и общий способ использования атрибута data-content
в качестве текстового или CSS-селектора:
$('[data-toggle="popover"]').popover({
html: true,
content: function() {
var content = $(this).data('content');
try { content = $(content).html() } catch(e) {/* Ignore */}
return content;
}
});
Теперь вы можете использовать атрибут data-content
с текстовым значением:
<a data-toggle="popover" data-title="Popover Title" data-content="Text from data-content attribute!" class="btn btn-large" href="#">Click to toggle popover</a>
... или используйте атрибут data-content
со значением селектора CSS:
<a data-toggle="popover" data-title="Popover Title" data-content="#countdown-popup" class="btn btn-large" href="#">Click to toggle popover</a>
<div id="countdown-popup" class="hide">Text from <code>#countdown-popup</code> element!</div>
Вы можете протестировать это решение здесь: http://jsfiddle.net/almeidap/eX2qd/
... или здесь, если вы используете Bootstrap 3.0: http://jsfiddle.net/almeidap/UvEQd/ (обратите внимание на имя атрибута data-content-target
!)
Ответ 3
Вы можете сделать это без дополнительных атрибутов кнопки, например:
http://jsfiddle.net/isherwood/E5Ly5/
.popper-content {
display: none;
}
<button class="popper" data-toggle="popover">Pop me</button>
<div class="popper-content">My first popover content goes here.</div>
<button class="popper" data-toggle="popover">Pop me</button>
<div class="popper-content">My second popover content goes here.</div>
<button class="popper" data-toggle="popover">Pop me</button>
<div class="popper-content">My third popover content goes here.</div>
$('.popper').popover({
container: 'body',
html: true,
content: function () {
return $(this).next('.pop-content').html();
}
});
Ответ 4
Сохраните идентификатор div, содержащий popper html внутри атрибута rel элемента a
<a rel="popover_div2" ... >click</a>
И затем получите rel привязки клика внутри вашего кликера (не знаете, как метод popover хранит его, но я уверен, что это так):
var myRel = $(this).attr(rel);
return $(myRel).html();
Ответ 5
Для меня это будет
data-id="#popover_div1"
в HTML для кнопки (С# для адресации id div).