Zmień zawartość podpowiedzi Twitter Bootstrap po kliknięciu

Mam tooltip na elemencie kotwicy, który wysyła żądanie AJAX po kliknięciu. Ten element ma tooltip (z Twitter Bootstrap). Chcę, aby zawartość podpowiedzi zmieniała się, gdy żądanie AJAX powróci pomyślnie. Jak mogę manipulować podpowiedzią po inicjacji?

Author: tjati, 2012-02-29

22 answers

Znalazłem to dzisiaj podczas czytania kodu źródłowego. Więc $.tooltip(string) wywołuje dowolną funkcję wewnątrz klasy Tooltip. Jeśli spojrzysz na Tooltip.fixTitle, pobierze on atrybut data-original-title i zastąpi nim wartość title.

Więc po prostu robimy:

$(element).tooltip('hide')
          .attr('data-original-title', newValue)
          .tooltip('fixTitle')
          .tooltip('show');

I oczywiście aktualizuje tytuł, który jest wartością wewnątrz podpowiedzi.

Inny sposób (patrz komentarz @ lukmdo poniżej):

$(element).attr('title', 'NEW_TITLE')
          .tooltip('fixTitle')
          .tooltip('show');
 362
Author: Mehmet Duran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-17 17:06:17

W Bootstrap 3 wystarczy wywołać elt.attr('data-original-title', "Foo"), ponieważ zmiany w atrybucie "data-original-title" już wywołują zmiany na wyświetlaczu podpowiedzi.

 73
Author: Adriaan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-11 19:32:23

Możesz zaktualizować tekst podpowiedzi bez wywoływania Pokaż / Ukryj:

$(myEl)
    .attr('title', newTitle)
    .tooltip('fixTitle')
    .tooltip('setContent')
 12
Author: BenG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-28 19:13:01

Oto dobre rozwiązanie, jeśli chcesz zmienić tekst bez zamykania i ponownego otwierania podpowiedzi.

$(element).attr('title', newTitle)
          .tooltip('fixTitle')
          .data('bs.tooltip')
          .$tip.find('.tooltip-inner')
          .text(newTitle)

W ten sposób tekst zostanie zastąpiony bez zamykania podpowiedzi (nie zmienia położenia, ale jeśli zmieniasz jedno słowo itp., powinno być dobrze). a po najechaniu kursorem off + back na tooltip, jest on nadal aktualizowany.

**to jest bootstrap 3, dla 2 prawdopodobnie musisz zmienić dane / nazwy klas

 11
Author: ndreckshage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-20 23:35:12

To działa, jeśli podpowiedź została utworzona (prawdopodobnie z javascript):

$("#tooltip_id").data('tooltip').options.title="New_value!";
$("#tooltip_id").tooltip('hide').tooltip('show');
 8
Author: Relational,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-02 11:29:49

Dla bootstrap 3.x

To wygląda na najczystsze rozwiązanie:

$(element)
  .attr('data-original-title', 'New title').tooltip('show')

Show służy do natychmiastowej aktualizacji tytułu i nie czeka na ukrycie i ponowne wyświetlenie podpowiedzi.

 6
Author: empa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-06 07:15:41

Możesz po prostu zmienić {[1] } używając następującego kodu:

$(element).attr('data-original-title', newValue);
 5
Author: Morteza QorbanAlizade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-13 10:03:03

Poniższe zadziałały dla mnie najlepiej, w zasadzie złomuję wszelkie istniejące podpowiedzi i nie zadaję sobie trudu, aby pokazać nową podpowiedź. Jeśli wywołanie show na etykiecie narzędzia, podobnie jak w innych odpowiedziach, pojawia się nawet jeśli kursor nie znajduje się nad nim.

Powodem, dla którego wybrałem to rozwiązanie, jest to, że inne rozwiązania, ponowne użycie istniejącej podpowiedzi, doprowadziły do pewnych dziwnych problemów z podpowiedziami czasami nie pokazującymi się po najechaniu kursorem nad elementem.

function updateTooltip(element, tooltip) {
    if (element.data('tooltip') != null) {
        element.tooltip('hide');
        element.removeData('tooltip');
    }
    element.tooltip({
        title: tooltip
    });
}
 4
Author: aknuds1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-05 17:19:05

Dla Bootstrap 4:

$(element).attr("title", "Copied!").tooltip("_fixTitle").tooltip("show").attr("title", "Copy to clipboard").tooltip("_fixTitle");
 4
Author: Bass,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-03 08:29:41

Dzięki ten kod był bardzo pomocny dla mnie, znalazłem go skuteczny w moich projektach

$(element).attr('title', 'message').tooltip('fixTitle').tooltip('show');

 2
Author: Lucky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-18 22:15:50

W bootstrap 4 po prostu używam $(el).tooltip('dispose'); i odtwarzam jak zwykle. Możesz więc umieścić dispose przed funkcją, która tworzy podpowiedź, aby upewnić się, że nie podwoi się.

Konieczność sprawdzania stanu i majsterkowania wartościami wydaje się mniej przyjazna.

 2
Author: Martin Lyne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-16 22:42:04

Możesz ustawić zawartość na wywołaniu tooltip za pomocą funkcji

        $("#myelement").tooltip({
            "title": function() {
                return "<h2>"+$("#tooltipcontainer").html()+"</h2>";
            }
        });

Nie musisz używać tylko tytułu wywołanego elementu.

 1
Author: studio 42 france,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-27 15:01:21

Zniszcz wszystkie istniejące podpowiedzi, abyśmy mogli ponownie zaludnić nową zawartość podpowiedzi

$(element).tooltip("destroy");    
$(element).tooltip({
    title: message
});
 1
Author: jerin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-18 13:42:22

Myślę, że Mehmet Duran ma prawie rację, ale były pewne problemy podczas korzystania z wielu klas z tym samym tooltipem i ich umiejscowieniem. Poniższy kod unika również błędów js sprawdzając, czy istnieje jakaś Klasa o nazwie "tooltip_class". Mam nadzieję, że to pomoże.

if (jQuery(".tooltip_class")[0]){    

        jQuery('.tooltip_class')
            .attr('title', 'New Title.')
            .attr('data-placement', 'right')
            .tooltip('fixTitle')
            .tooltip('hide');

    }
 0
Author: René Fernández,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-25 11:41:18

Zmień tekst, zmieniając tekst w elemencie bezpośrednio. (nie aktualizuje pozycji podpowiedzi).

$('.tooltip-inner', $element.next()).html(newHtml);
$('.tooltip-inner', $element.next()).text(newText);

Zmień tekst, niszcząc Stary podpowiedź, a następnie tworząc i pokazując nowy. (Powoduje, że stary znika, a nowy znika)

$element
.tooltip('destroy')
.tooltip({
    // Repeat previous options.
    title: newText,
})
.tooltip('show');

Używam najlepszej metody do animowania " zapisywania."message (using &nbsp so the tooltip does not change in size) and to change the text to" Done."(plus padding) po zakończeniu żądania.

$element.tooltip({
  placement: 'left',
  title: 'Saving...',
  trigger: 'manual',
}).tooltip('show');

var parent = $element.parent();
var interval_id = setInterval(function(){
    var text = $('.tooltip-inner', parent).html();
    switch(text) {
    case 'Saving.&nbsp;&nbsp;': text = 'Saving..&nbsp;'; break;
    case 'Saving..&nbsp;': text = 'Saving...'; break;
    case 'Saving...': text = 'Saving.&nbsp;&nbsp;'; break;
    }
    $('.tooltip-inner', parent).html(text);
}, 250);

send_request( function(){
    // When the request is complete
    clearInterval(interval_id);
    $('.tooltip-inner', parent).html('Done.&nbsp;&nbsp;&nbsp;&nbsp;');
    setTimeout(function() {
        $element.tooltip('hide');
    }, 1500 /* Show "Done." for a bit */);
});
 0
Author: Nate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-08 19:43:42

Żadna z odpowiedzi nie działa, oto obejście:

$('#'+$(element).attr('aria-describedby')+' .tooltip-inner').html(newTitle);
 0
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-03 23:46:22

To działało dla mnie: (bootstrap 3.3.6; jquery=1.11.3)

<a id="alertTooltip" href="#" data-html="true" class="tooltip" data-toggle="tooltip" title="Tooltip message"></a>

<script>
  $('#alertTooltip').attr('title', "Tooltip new <br /> message").tooltip('fixTitle');
</script>

Atrybut data-html="true" pozwala na użycie html w tytule podpowiedzi.

 0
Author: omabra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-29 09:25:46

With tooltip object Boostrap:

$(element).attr('data-original-title', 'New value');
$(element).data('bs.tooltip').tip().find('.tooltip-inner').text('New value');
 0
Author: B.Asselin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-03 07:51:32

Bootstrap 4

$('#topic_1').tooltip('dispose').tooltip({title: 'Goodbye'}).tooltip('show')

Https://getbootstrap.com/docs/4.1/components/tooltips/#tooltipdispose

$('#topic_1').tooltip({title: 'Hello'}).tooltip('show');
setTimeout( function() {
  $('#topic_1').tooltip('dispose').tooltip({title: 'Goodbye'}).tooltip('show');
}, 5000);
#topic_1 {
  border: 1px solid red;
  margin: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js" integrity="sha384-o+RDsa0aLu++PJvFqy8fFScvbHFLtbvScb8AjopnFD+iEQ7wo/CG0xlczd+2O/em" crossorigin="anonymous"></script>

<div id="topic_1">Topic 1</div>
 0
Author: Chloe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:58:16

Możesz użyć tego kodu, aby ukryć podpowiedź zmień jego tytuł i Pokaż podpowiedź ponownie, gdy żądanie ajax powróci pomyślnie.

$(element).tooltip('hide');
$(element).attr('title','this is new title');
$(element).tooltip('fixTitle');
setTimeout(function() {  $(element).tooltip('show');}, 500);
 -1
Author: Saifee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-03 17:30:52

Używam tego łatwego wyjścia:

$(document).ready(function() {
    $("#btn").prop('title', 'Click to copy your shorturl');
});

function myFunction(){
  $(btn).tooltip('hide');
  $(btn).attr('data-original-title', 'Test');
  $(btn).tooltip('show');
});
 -1
Author: George,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-24 13:29:07
$(this).attr('data-original-title', 'click here to publish')
       .tooltip('fixTitle')
       .tooltip('show');

Przydatne, jeśli chcesz zmienić tekst podpowiedzi po zainicjowaniu go ATR 'data-original-title'.

 -1
Author: Amine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-07 06:51:45