Podpowiedź Bootstrapa nie znika po kliknięciu przycisku i kliknięciu myszką

Mam problem z podpowiedzią Bootstrapa : gdy klikam przycisk, podpowiedź pozostaje nawet jeśli kursor znajduje się poza przyciskiem. Zajrzałem do Instrukcji- Bootstrap ' s tooltip i jeśli klikam na przyciski, widzę ten sam problem. Czy jest jakieś rozwiązanie, aby to naprawić? Właśnie próbowałem w najnowszym FF, IE.

Author: Yangshun Tay, 2015-11-07

23 answers

Dzieje się tak dlatego, że trigger nie jest ustawiona. Domyślną wartością trigger jest 'hover focus', więc podpowiedź pozostaje widoczna po kliknięciu przycisku, aż do kliknięcia innego przycisku, ponieważ przycisk jest focused.

Więc wszystko, co musisz zrobić, to zdefiniować trigger jako 'hover'. Poniżej ten sam przykład, do którego połączyłeś się bez utrzymywania podpowiedzi po kliknięciu przycisku:

$('[data-toggle="tooltip"]').tooltip({
    trigger : 'hover'
})  

Przykład doc w fiddle -> http://jsfiddle.net/vdzvvg6o/

 251
Author: davidkonrad,
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-11-27 12:09:15

Wiem, że ma ponad rok, ale nie mogłem tego zrobić z żadnymi przykładami tutaj. Musiałem użyć:

$('[rel="tooltip"]').on('click', function () {
    $(this).tooltip('hide')
})

To również pokazuje podpowiedź ponownie po najechaniu kursorem.

 65
Author: Nitai,
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-12-08 03:36:05

W moim przypadku problem został odtworzony tylko w Internet Explorerze: bez względu na to, który element (input, div itp...) ma tooltip-po kliknięciu-tooltip pozostaje wyświetlony.

Znalazłem kilka rozwiązań w sieci, które polecają .hide() ta podpowiedź na elementach Click event - ale to zły pomysł - cofnięcie kursora myszy do tego samego elementu-utrzymuje go w ukryciu... w moim przypadku

$('.myToolTippedElement').on('click', function () {
    $(this).blur()
})

Stworzył całą magię!!!- gdzie .myToolTippedElement to element, który ma etykietę kursu...

 11
Author: Kamornik Cola,
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-06-08 14:03:41

Witam mam małe rozwiązanie tego problemu. Gdy inne rozwiązania nie działają po prostu spróbuj tego:

$('body').tooltip({
        selector: '[data-toggle="tooltip"], [title]:not([data-toggle="popover"])',
        trigger: 'hover',
        container: 'body'
    }).on('click mousedown mouseup', '[data-toggle="tooltip"], [title]:not([data-toggle="popover"])', function () {
        $('[data-toggle="tooltip"], [title]:not([data-toggle="popover"])').tooltip('destroy');
    });

Jest to również rozwiązanie do przeciągania i upuszczania. Więc mam nadzieję, że to komuś pomoże:)

 10
Author: Nienormalny_,
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-04-12 10:22:04

W angular 7 z bootstrap 4 i jquery znalazłem to i działa dobrze. Użyłem dispose, ponieważ niszczy nie ukrywa podpowiedzi.

  ngAfterViewChecked() {
    $('[data-toggle="tooltip"]').tooltip({
      trigger: 'hover'
    });
    $('[data-toggle="tooltip"]').on('mouseleave', function () {
      $(this).tooltip('dispose');
    });
    $('[data-toggle="tooltip"]').on('click', function () {
      $(this).tooltip('dispose');
    });
   }
 6
Author: spec,
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
2019-04-11 16:23:23

Możesz też dodać:

onclick="this.blur()"
 3
Author: Sergey Koshkin,
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-03-22 07:57:53

Rozwiązanie Robocze

$(document).on("click",function()
    {
    setTimeout(function()
    {

  $('[data-toggle="tooltip"]').tooltip('hide');

},500);    // Hides tooltip in 500 milliseconds
    });
 3
Author: Alpha,
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
2019-06-27 08:59:42

Spróbuj użyć rel="tooltip" zamiast data-toggle="tooltip", co zadziałało w moim przypadku. Używałem data-toggle="tooltip", a także ustawiłem stan wyzwalacza jako hover, który nie działał w moim przypadku. Kiedy zmieniłem selektor danych, zadziałało.

Kod HTML:

<button id="submit-btn" type="submit" class="btn btn-success" rel="tooltip" title="Click to submit this form">Submit</button>

Kod JS // Tooltip $('.btn").tooltip({ trigger: "hover" });

To z pewnością usunie przyklejoną podpowiedź.

 2
Author: Jestino Sam,
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-12-30 15:51:04

Powyższa odpowiedź Davida pomogła rozwiązać mój problem. Miałem zarówno hover i kliknij wydarzenie na przycisk. Firefox na Macu zachowywał się tak, jak chciałem. Oznacza to, że Pokaż podpowiedź po najechaniu kursorem, Nie pokazuj podpowiedzi dla kliknięcia. W innych przeglądarkach i systemie operacyjnym po kliknięciu pojawi się podpowiedź i pozostanie jako Pokaż. Nawet jeśli przesunę mysz do innych przycisków na kursor. To mialem:

$('[data-toggle="tooltip"]').tooltip({placement: 'right', html: true}); 

To jest fix:

$('[data-toggle="tooltip"]').tooltip({placement: 'right', html: true, trigger: 'hover'}); 
 2
Author: user1322977,
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-02-14 19:33:36

Sposób, w jaki naprawiłem ten problem, polegał na usunięciu podpowiedzi w funkcji zdarzenia kliknięcia za pomocą następującego kodu:

$("#myButton").on("click", function() {
    $("div[role=tooltip]").remove();
});
 2
Author: soroxis,
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-03-14 00:25:07

Jest to również możliwe do osiągnięcia w HTML dodając:

 data-trigger="hover"

 <button type="button" data-toggle="tooltip" data-placement="top" data-trigger="hover" title="To re-enable scanning, click here">Text</button>
 2
Author: csharpsql,
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
2020-01-10 14:58:33

Możesz również użyć poniższej metody, aby ukryć podpowiedź na mouseleave , Jak poniżej:

jQuery("body").on("mouseleave", ".has-tooltip", function(){
    jQuery(this).blur();
});
 1
Author: Hanuman Sahay,
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-12-19 11:26:03

Miałem ten problem z Bootstrap 4 na iPhone z Safari.

Na PC/pulpicie, podpowiedź działa świetnie. Ale gdy patrzysz na iPhone ' a z iOS 14, Po kliknięciu / dotknięciu przycisku Etykieta pozostanie widoczna. Również podczas ukrywania warstwy.

Dla mnie dodanie tego kodu rozwiązało problem na iPhonie:

jQuery('[data-toggle="tooltip"]').tooltip({
    trigger : 'hover'
}); 

jQuery('[data-toggle="tooltip"]').on("click", function () {
    $(this).tooltip("hide");
}); 
 1
Author: Al-Noor Ladhani,
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
2020-12-23 03:30:12

Używam podpowiedzi bootstrap w cyklu.js i żaden z powyższych nie działał dla mnie.

Musiałem to zrobić:

return button( selector + '.btn.btn-sm', 
             {
               hook: {
                 destroy: tooltipOff,
                 insert:  toggleTooltipOn,
               },
....

function toggleTooltipOn(vnode){
  setupJQuery();  
  jQuery[0].$( vnode.elm )
    .tooltip({container:'body', trigger: 'hover');
//container:body is to help tooltips not wiggle on hover
//trigger:hover is to only trigger on hover, not on click
}

function tooltipOff( vnode ){
  setupJQuery();      
  jQuery[0].$( vnode.elm ).tooltip('hide');
}
 0
Author: Brian C.,
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-01 15:22:44

To działa dla mnie:

$(document).ready(function() {
   $('#save').tooltip({
            trigger : 'hover'
        }) ;

});

Wyłączałem dynamicznie przycisk Zapisz, potem był problem.

 0
Author: Devendra Singraul,
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-11-08 11:39:34

Wewnątrz funkcji gotowego dokumentu użyj tego

 $(document).ready(function(){
            $('[data-toggle="tooltip"]').tooltip({
               trigger : 'hover'
            });
    });
 0
Author: Siva Ganesh,
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-26 06:13:12

To rozwiązanie zadziałało dla mnie.

$('a[data-toggle="tooltip"]').tooltip({
  animated: 'fade',
  placement: 'bottom',
  trigger: 'click'
});

$('a[data-toggle="tooltip"]').click(function(event){
  event.stopPropagation();
});

$('body').click(function(){
  $('a[data-toggle="tooltip"]').tooltip('hide');
});

Fiddle

Próbowałem większości rozwiązań podanych w poprzednich odpowiedziach, ale żadne z nich nie zadziałało.
 0
Author: طلحة,
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-28 06:37:57

Mój problem jest w DataTable. Poniższy kod działa dla mnie.

columnDefs: [ { targets: 0, data: "id", render: function (data, type, full, meta) { return '<a href="javascript:;" class="btn btn-xs btn-default" data-toggle="tooltip" title="Pending" data-container="body"><i class="fa fa-check"></i></a>'; } } ], drawCallback: function() { $('[data-toggle="tooltip"]').tooltip(); $('[data-toggle="tooltip"]').on('click', function () { $(this).tooltip('hide'); }); }

 0
Author: WHY,
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-11-28 19:58:48

W moim przypadku było to rozwiązanie:

beforeDestroyingElement() {    
  $('[data-toggle="tooltip"]').tooltip('hide');
}

Nie przestrzegałem tej zasady z Bootstrap docs:

Podpowiedzi muszą być ukryte, zanim ich odpowiednie elementy zostaną usunięte z drzewa DOM.

 0
Author: Gabi L,
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
2019-06-06 02:36:03

Możesz również użyć tego sposobu w przypadku starych wersji, ponieważ zaakceptowana odpowiedź nie zadziałała dla mnie i napisałem ten kod dla siebie i jego działania dobrze.

$(document).on('mousedown', "[aria-describedby]", function() {
    $("[aria-describedby]").tooltip('hide');
});
 0
Author: Golden Guard,
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
2020-06-27 01:43:57

Jeśli ktoś chce skonfigurować podpowiedź, która będzie wyświetlana przez jakiś czas po kliknięciu, oto jak to zrobiłem:

$('[data-toggle="tooltip"]').tooltip({
trigger : 'click'})  

$('[data-toggle="tooltip"]').on('shown.bs.tooltip', function () {
$(this).tooltip('hide')
})
 0
Author: Fawaz Ahmed,
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
2020-07-01 11:35:06

Użycie forced blur() ma potencjał, aby zmniejszyć doświadczenie użytkownika. Nie zrobiłbym tego. Odkryłem, że usunięcie "data-original-title", a także usunięcie atrybutów "data-toggle" i "title" działało dla mnie.

    $(id).tooltip('hide');
    $(id).removeAttr("data-toggle");
    $(id).removeAttr("data-original-title");
    $(id).removeAttr("title");
 0
Author: Gregory Bologna,
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
2020-08-03 19:52:52

Używanie delegatury, aby była przyjazna ajaxowi,

// if you're not using turbolinks, then you can remove this parent wrapper
$(document).on('turbolinks:load'), function() {  
  // enable tooltip with delegation to allow ajax pages to keep tooltip enabled
  $('body').tooltip({
    select: "[data-toggle='tooltip']"
  });

  // remove old tooltip from sticking on the page when calling ajax with turbolinks
  $('body').on('click', "[data-toggle='tooltip']", function() {
    $(this).tooltip('dispose');
  });
});
 0
Author: konyak,
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
2020-10-22 18:08:40