У меня есть кнопки для закладки элементов, а дизайн вызывает всплывающую подсказку для кнопки над кнопкой закладок. Перед тем, как он будет отмечен закладкой, всплывающая подсказка должна иметь желтый фон и сказать «Сохранить». После того, как пользователь нажал кнопку, он должен иметь зеленый фон (и стрелку) и читать «Сохранено».Изменение шаблона подсказки Bootstrap 4 без обновления
Bootstrap 4 has changed some things, что затрудняет настройку CSS. А именно, элемент tooltip не появляется в DOM после прикрепленного элемента. Он отображается далеко внизу DOM, поэтому .thing--active + .tooltip
не будет работать.
Изменение текста было достаточно простым. Я изменил атрибут title
на клик, а также атрибут data-original-title
, используемый Bootstrap 4. Я попытался добавить значение data-template
при щелчке по изменению шаблона всплывающей подсказки, используемого после сохранения элемента, но кажется, что стиль всплывающей подсказки установлен на загрузке страницы , Я даже попробовал запустить .tooltip()
на каждом клике, чтобы каждый раз сбросить шаблоны. Так не пойдет.
Я думал об использовании события .on('hidden.bs.tooltip', function() {})
, чтобы передать что-то новое, но, честно говоря, я не уверен, как я начну использовать его. Любые идеи, как сделать это изменение нажатием?
$(function() {
var savedTemplate = "<div class='tooltip tooltip--active' role='tooltip'><div class='tooltip-arrow'></div><div class='tooltip-inner'></div></div>";
$('.js-bookmark').tooltip();
var bookmarkSwap = function($el) {
if ($el.hasClass("is-saved")) {
$el.removeClass("is-saved").attr("aria-label", "Bookmark this").attr("title", "Save")
// `data-original-title` is set by Bootstrap tooltip.js when
// title changes. This changes it as well.
.attr("data-original-title", "Save");
$('.js-bookmark').tooltip();
} else {
$el.addClass("is-saved").attr("aria-label", "Bookmarked").attr("title", "Saved").attr("data-template", savedTemplate)
// `data-original-title` is set by Bootstrap tooltip.js when
// title changes. This changes it as well.
.attr("data-original-title", "Saved");
$('.js-bookmark').tooltip();
}
};
$('.js-bookmark').click(function(e) {
bookmarkSwap($(this));
});
});
.tooltip--active .tooltip-inner { background-color: green !important; }
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.3.7/js/tether.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/js/bootstrap.min.js"></script>
<div class="card">
<a href="#">
<img class="card-img-top" src="http://lorempixel.com/100/100/nature/" width="100">
</a>
<div class="">
<h3 class="card-title">
<a href="#">Vendor Name</a>
</h3>
<p class="card-text">
Boise, ID
</p>
<button class="js-bookmark save-vendor" aria-label="Bookmark" data-toggle="tooltip" data-placement="top" title="Save">☑️</button>
</div>
</div>
Спасибо, Чейз! Я удалил привязку мышки, чтобы она снова могла измениться, если кто-то сохранил и не сохранил несколько раз подряд. Дайте мне знать, если я настроюсь на неприятности. Но сейчас это работает. – alexbea