Всплывающие окна и всплывающие подсказки в Bootstrap 3.0

84

Я новичок в Bootstrap, и мне не удается заставить работать функции всплывающих окон и всплывающих подсказок. У меня не было проблем с выпадающими списками и моделями, но мне кажется, что мне чего-то не хватает для всплывающих окон и всплывающих подсказок.

Я получаю всплывающие подсказки, но они не стилизованы и расположены не так, как примеры начальной загрузки. А поповер вообще не работает.

Пожалуйста, взгляните и дайте мне знать, что мне не хватает.

       <!DOCTYPE html>
    <html>
      <head>
        <title>Bootstrap 101 Template</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!-- Bootstrap -->
        <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
        <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet" media="screen">
        <link href="css/font-awesome.min.css" rel="stylesheet" media="screen">
        <link href="css/index.css" rel="stylesheet" media="screen">
        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
          <script src="../../assets/js/html5shiv.js"></script>
          <script src="../../assets/js/respond.min.js"></script>
        <![endif]-->
      </head>
      <body>
       <p id="tool"class="muted" style="margin-bottom: 0;">
        Tight pants next level keffiyeh
        <a href="#" data-toggle="tooltip" title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" data-toggle="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" data-toggle="tooltip" title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" data-toggle="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral.</p>
       <h3>Live demo</h3>
        <div style="padding-bottom: 24px;">
          <a id="pop" href="#" class="btn btn-lg btn-danger" data-toggle="popover" title="A Title" data-content="And here's some amazing content. It's very engaging. right?">Click to toggle popover</a>
        </div>

        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script src="http://code.jquery.com/jquery.js"></script>
        <!-- Include all compiled plugins (below), or include individual files as needed -->
        <script type="text/javascript">
            $(document).ready(function() {

                $('.tool').tooltip();
                $('.btn').popover();

            }); //END $(document).ready()

        </script>

        <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap.min.css"></script>

      </body>

    </html>
user2560895
источник
Я только что опубликовал тот же вопрос несколько минут назад, также используя BS3, все остальное работает как модальные окна и вкладки, но без всплывающих подсказок или всплывающих окон ... обновит вас, если я что-то найду.
xXPhenom22Xx
для всплывающего окна параметры не определены
Cybermaxs
На данный момент я просто пытался получить поведение по умолчанию, но мне интересно, чтобы оно отображалось при наведении курсора вместо щелчка, но это было следующим. Мне все еще нужно что-то добавить для опций?
user2560895
Приведенный выше код - это то, что я использую в настоящее время, но он все еще не работает. Какие-либо предложения? У меня есть вещи в неправильном порядке или что-то в этом роде?
user2560895

Ответы:

147

Оказывается, лучший ответ у Эвана Ларсена . Проголосуйте за его ответ (и / или выберите его как правильный) - это великолепно.

Рабочий jsFiddle здесь

Используя уловку Эвана, вы можете создать все всплывающие подсказки с помощью одной строчки кода:

$('[data-toggle="tooltip"]').tooltip({'placement': 'top'});

Вы увидите, что все всплывающие подсказки в вашем длинном абзаце имеют рабочие всплывающие подсказки только с одной строкой.

В примере с jsFiddle (ссылка выше) я также добавил ситуацию, когда одна всплывающая подсказка (по кнопке входа) включена по умолчанию. Кроме того, код всплывающей подсказки ДОБАВЛЯЕТСЯ к кнопке в jQuery, а не в разметке HTML.


Popovers сделать работу так же , как всплывающие подсказки:

$('[data-toggle="popover"]').popover({trigger: 'hover','placement': 'top'});

И вот оно! Наконец-то успех.

Одной из самых больших проблем в выяснении этого материала была работа начальной загрузки с помощью jsFiddle ... Вот что вы должны сделать:

  1. Получите ссылку на Twitter Bootstrap CDN отсюда: http://www.bootstrapcdn.com/
  2. Вставьте каждую ссылку в блокнот и удалите ВСЕ, кроме URL-адреса. Например:
    //netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css
  3. В jsFiddle с левой стороны откройте раскрывающийся список внешних ресурсов.
  4. Вставьте каждый URL-адрес, нажимая знак плюса после каждой вставки
  5. Теперь откройте раскрывающийся список «Frameworks & Extensions» и выберите jQuery 1.9.1 (или что угодно ...)

СЕЙЧАС вы готовы к работе.

cssyphus
источник
почему в jsFiddle триггер не заключен в одинарные кавычки, а его размещение?
HPWD
Нет веской причины, просто пропустил. Но вроде работает. Возможно, однословные ключи не нуждаются в кавычках - иногда они не требуются - тем не менее, я обычно их вставляю.
cssyphus
это звучит логично для меня. Спасибо за разъяснения.
HPWD 05
4
для меня это звучит как тарабарщина. Ха! просто должен был это сказать;)
Эван Ларсен
Можете ли вы использовать этот метод в относительности к конкретному контейнеру? Создание всех всплывающих подсказок или всплывающих окон в определенном контейнере?
Майкл Эклунд
231

Я использую это на всех своих страницах, чтобы включить всплывающую подсказку

$(function () { $("[data-toggle='tooltip']").tooltip(); });
Эван Ларсен
источник
4
спасибо, из всех ответов, которые я дал, я должен сказать, что, вероятно, потратил на это меньше всего времени. Но все же как-то набралось больше всего очков.
Эван Ларсен
Но проблема есть. у меня он не работает с хромом. затем я закончил тем, что сделал что-то jsfiddle.net/arunpjohny/4HptX/4 из этого сообщения stackoverflow.com/questions/18372632/…
М. Салахуддин
@Md Salahuddin, так что теперь он работает, как только вы обновите свой jquery? Вы задаете вопрос или это было заявление?
Эван Ларсен
1
Это просто заявление. Вместо этого я использовал jsfiddle.net/arunpjohny/4HptX/4, поскольку в моем случае этот код не работал с хромом.
Md. Salahuddin
27

Работа с BOOTSTRAP 3: коротко и просто

Проверить - JS Fiddle

HTML

<div id="myDiv">
<button class="btn btn-large btn-danger" data-toggle="tooltip" data-placement="top" title="" data-original-title="Tooltip on top">Tooltip on top</button>    
</div>

Javascript

$(function () { 
    $("[data-toggle='tooltip']").tooltip(); 
});
Абхишек Гоэль
источник
Это не сработает, если вы хотите, чтобы функция всплывала для данных, загружаемых асинхронно (ajax, angular и т. Д.), Но ответ ниже будет.
Адриан Хедли
6

Пришлось сделать это на готовом DOM

$( document ).ready(function () { // this has to be done after the document has been rendered
    $("[data-toggle='tooltip']").tooltip({html: true}); // enable bootstrap 3 tooltips
    $('[data-toggle="popover"]').popover({
        trigger: 'hover',
        'placement': 'top',
        'show': true
    });
});

И измените мои заказы загрузки на:

  • jQuery
  • jQuery UI
  • Бутстрап
Джонатан
источник
1
У меня была аналогичная проблема, загружал jquery ui после начальной загрузки, ваш ответ заставил меня понять проблему с этим.
hubson bropa
проверьте это на наличие всплывающих окон, 1. Запуск всплывающих окон, 2. Позиционирование всплывающих окон с помощью атрибутов данных
Шайджу Т.
5

По какой-то причине единственный способ заставить свой код работать - это переключить пару вещей. Если до сих пор у вас ничего не работало, попробуйте это:

$('body').popover({ 
    selector: '[data-toggle="popover"]', 
    trigger: 'hover',
    placement: 'right'
});
Санта
источник
1
Это единственное, что сработало для меня, поскольку элемент popover может быть не в виду с самого начала. Благодаря!
J. Titus
0

У вас есть синтаксическая ошибка в вашем скрипте, и, как отмечает xXPhenom22Xx, вы должны создать экземпляр всплывающей подсказки.

<script type="text/javascript">

    $(document).ready(function() {

        $('.btn-danger').tooltip();

    }); //END $(document).ready()

</script>

Обратите внимание, что я использовал ваш класс «btn-dangerous». Вы можете создать другой класс или использовать id="someidthatimakeup".

cssyphus
источник
Хорошо, я думаю, я изменил код, чтобы он соответствовал тому, что вы предложили. Это все еще не работает. Я еще не знаю Javascript, так что это немного сложно. Я просто пытаюсь получить примеры, которые должны работать одинаково.
user2560895
Всплывающее окно немного сложно, но у меня есть всплывающая подсказка, которая работает, как указано выше.
cssyphus
0

Вам просто нужно включить всплывающую подсказку:

$('some id or class that you add to the above a tag').popover({
    trigger: "hover" 
})
xXPhenom22Xx
источник
Нет, при наведении курсора на него будет отображаться просто всплывающее окно, а не всплывающая подсказка.
CpnCrunch