Bootstrap'in araç ipucu, düğmeye tıkladıktan ve fare kaydettikten sonra kaybolmuyor


115

Bootstrap'ın araç ipucuyla ilgili bir sorunum var: Bir düğmeye tıkladığımda, imleç düğmenin dışında olsa bile araç ipucu kalıyor. Kılavuza baktım - Bootstrap'ın araç ipucu ve düğmelere tıklıyorsam aynı sorunu görüyorum. Bunu düzeltmek için herhangi bir çözüm var mı? En son FF, IE'de denedim.


Sorum da bağlantıda çalışmıyor, oraya bakalım. Aynı sorun var.
SilentCry

Yanıtlar:


241

Bunun nedeni triggerbelirlenmemiş olmasıdır. Tetikleyici için varsayılan değer 'hover focus', bu nedenle araç ipucu bir düğme tıklandıktan sonra başka bir düğme tıklanana kadar görünür kalır, çünkü düğme tıklanır focused.

Yani tek yapmanız gereken sadece triggerolarak tanımlamak 'hover'. Bir düğmeye tıklandıktan sonra araç ipuçları kalmadan bağladığınız aynı örneğin altında:

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

keman içindeki doc örneği -> http://jsfiddle.net/vdzvvg6o/


1
Teşekkürler David, bu gerçekten işe yarıyor. Sonunda araç ipucu için tetikleme seçeneğini yanlış anladım, şimdi haklıyım.
SilentCry

1
@SilentCry Sadece kimi hedeflediğinizi aklınızda bulundurun, bir "vurgulu" olayı tetiklemek her zaman kolay / yaygın olmayabilir.
phk

3
@davidkonrad Mobil platformlar, görme engelli kullanıcılar. Ayrıca neden "vurgulu odağı" varsayılan olarak ayarladıklarını da açıklayabilir.
phk

2
@phk, bootstrap'in mobil öncelikli olmamakla ilgili genel bir problemi var, kör insanlarla ilgili aria özelliklerini kullanmalıyız. Kanadalı yetkililer için gerçekleştirebileceğiniz çeşitli "düzeyler" ile kullanılabilirliği test etmek için BTW harika bir araç var -> achecker.ca/checker/index.php ülkemde bu standartlar yok, ancak bunlara uymaya değer neyse.
davidkonrad

1
Aşağıdaki Karmonik Cola'nın cevabına bir göz atmak isteyebilirsiniz. Araç ipucunu odakta göstermeye devam ediyor.
David Stosik

63

Bir yaşın üzerindeyim biliyorum ama bunu burada hiçbir örnekle çalıştıramadım. Aşağıdakileri kullanmak zorunda kaldım:

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

Bu, üzerine gelindiğinde araç ipucunu tekrar gösterir.


1
Bu, kabul edilen yanıt olmalı ve ayrıca önyükleme kod tabanına uygulanmalıdır.
kjdion84

5
Bu, eşzamansız geri göndermelere neden olan bir 'fareyle üzerine gelme' tetikleyicisine sahip düğmeler üzerine yerleştirilen önyükleme araç ipuçları için son derece yararlı oldu (yani, ekran modal panelleri). Bu olmadan, düğmeye basmadan geri gönderme, ipucunun "takılıp" kalmasına ve asla kaybolmasına neden olur.
bradykey

1
Benim durumumda, bir ajax işlemi gerçekleştirilirken gönder düğmesini devre dışı bırakıyordum. Ajax işlemi çalışırken, düğme devre dışı bırakıldığından beri araç ipucu kalır. Ajax işlemi tamamlandığında, düğme yeniden "kullanılabilir" hale gelecektir. Fareyle düğmenin üzerinde ve sonra kapalıyken araç ipucu kaybolur. Nitai'nin çözümü her şeyi düzeltti. Araç ipucu artık tıklandığında gizleniyor ve düğme tekrar etkin hale geldiğinde fareyle üzerine gelindiğinde çalışmaya devam ediyor.
HPWD

@ Kjdion84'e katılıyorum. Bunu bulana kadar mücadele ediyorum
Ahmad

9

Merhaba bu sorun için küçük bir çözümüm var. Diğer çözümler işe yaramadığında sadece şunu deneyin:

$('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');
    });

Bu, sürükle ve bırak için de bir çözümdür. Umarım bu birine yardımcı olur :)


Sadece Telerik Kendo ızgara düğmeleriyle sorun yaşıyordum. Birini tıkladığımda araç ipi gizlenmiyordu. Bu onu çözdü!
John81

8

Benim durumumda sorun yalnızca Internet Explorer'da yeniden oluşturuldu: hangi öğenin (girdi, div vb.) Araç ipucu olduğu önemli değil - tıklandığında araç ipucu gösterilmeye devam ediyor.

web'de .hide () öğelerine ilişkin araç ipucunu öneren bazı çözümler buldum Click olayı - ancak bu kötü bir fikir - aynı öğeye geri dönmek - onu gizli tutuyor ... benim durumumda

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

tüm sihri yaptı !!! - burada .myToolTippedElement, Ders için bir araç ipucuna sahip olan öğedir ...


Benim için de işe yarıyor ve araç ipucunu odakta görüntülemeye devam eden kabul edilen çözüme göre avantaja sahip.
David Stosik

3

bootstrap 4 ve jquery ile açısal 7'de bunu buldum ve iyi çalışıyor. Dispose kullandım çünkü yok eder araç ipucunu gizlemez.

  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');
    });
   }

2

Benim durumumda işe yarayan rel="tooltip"yerine kullanmayı deneyin data-toggle="tooltip". Kullanıyordum data-toggle="tooltip"ve ayrıca tetikleme koşulunu, benim durumumda çalışmayan vurgulu olarak ayarladım. Veri seçicimi değiştirdiğimde işe yaradı.

HTML Kodu:

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

JS Kodu // Araç ipucu $ ('. Btn'). Araç ipucu ({tetik: 'üzerine gelme'});

Bu, sıkışmış ipucunu kesinlikle kaldıracaktır.


2

David'in yukarıdaki cevabı sorunumu çözmemde yardımcı oldu. Düğmede hem fareyle üzerine gelme hem de tıklama olayım vardı. MAC üzerindeki Firefox istediğim gibi davrandı. Yani, fareyle üzerine gelindiğinde araç ipucunu göster, tıklama için araç ipucunu gösterme. Diğer tarayıcılarda ve işletim sistemlerinde, tıkladığımda, araç ipucu görünüyor ve gösterildiği gibi kalıyor. Fareyi gezinmek için diğer düğmelere götürsem bile. Sahip olduğum şey buydu:

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

Düzeltme şudur:

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

2

Ayrıca şunları ekleyebilirsiniz:

onclick="this.blur()"

1
bunun Kamornik Cola'nın önerdiğinden ne farkı var (jQuery olmadan uygulama dışında)? Cevabın yardımcı olması için bazı açıklamalar eklemenizi öneririm. Saygılarımızla
YakovL

2

Çalışma Çözümü

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

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

},500);    // Hides tooltip in 500 milliseconds
    });

Bu kod soruyu yanıtlayabilirken, bu kodun soruyu neden ve / veya nasıl yanıtladığına ilişkin ek bağlam sağlamak, uzun vadeli değerini artırır.
Adam

@Adam Forumlarda herhangi bir <a>, <button> veya bunlara ekli düğme işlevi veya görünümü olan diğer öğelere tıkladıktan sonra bir araç ipucunu gizlemek için çalışan bir çözüm bulamadım.
Alpha

1

Bu sorunu çözme şeklim, aşağıdaki kodu kullanarak tıklama olay işlevindeki araç ipucunu kaldırmaktı:

$("#myButton").on("click", function() {
    $("div[role=tooltip]").remove();
});

1
Fareyle üzerine gelindiğinde ipucunu tekrar alabilir misin?
Vishnu

0

Cycle.js'de bootstrap araç ipucunu kullanıyorum ve yukarıdakilerin hiçbiri benim için işe yaramadı.

Bunu yapmak zorundaydım:

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

Bu benim için çalışıyor:

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

});

Kaydet düğmesini dinamik olarak devre dışı bırakıyordum, o zaman sorun oldu.


Kaydet
düğmemin

0

Belgenizin hazır işlevinin içinde bunu kullanın

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

0

Bu çözüm benim için çalıştı.

$('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');
});

Vaktini boşa harcamak

Önceki cevaplarda verilen çözümlerin çoğunu denedim ama hiçbiri benim için işe yaramadı.


0

Benim sorunum DataTable'da. Aşağıdaki kod benim için çalışıyor.

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

Ayrıca , aşağıdaki gibi , fare çubuğunda araç ipucunu gizlemek için aşağıdaki yöntemi de kullanabilirsiniz :

jQuery("body").on("mouseleave", ".has-tooltip", function(){
    jQuery(this).blur();
});

0

Benim durumumda bunun düzeltilmesi:

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

Bootstrap belgelerinden bu kurala uymuyordum:

Araç ipuçları, ilgili öğeleri DOM'dan kaldırılmadan önce gizlenmelidir.


0

Bu, aşağıdakilerin eklenmesiyle HTML'de de elde edilebilir:

 data-trigger="hover"

 <button type="button" data-toggle="tooltip" data-placement="top" data-trigger="hover" title="To re-enable scanning, click here">Text</button>

Ne yazık ki bu işe yaramıyor ve ipucu hala takılı kaldı.
Fwd079

0

Ayrıca eski sürümler için de bu yolu kullanabilirsiniz çünkü kabul edilen cevap benim için işe yaramadı ve bu kodu kendim ve onun çalışması için yazdım.

$(document).on('mousedown', "[aria-describedby]", function() {
    $("[aria-describedby]").tooltip('hide');
});

0

Birisi tıkladıktan sonra bir süre gösterilecek bir araç ipucu ayarlamak istiyorsa, işte böyle yaptım:

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

$('[data-toggle="tooltip"]').on('shown.bs.tooltip', function () {
$(this).tooltip('hide')
})

0

Zorunlu bulanıklaştırma () kullanmak, kullanıcı deneyimini azaltma potansiyeline sahiptir. Ben yapmam. "Data-original-title" ve "data-toggle" ve "title" özelliklerini kaldırmanın benim için işe yaradığını buldum.

    $(id).tooltip('hide');
    $(id).removeAttr("data-toggle");
    $(id).removeAttr("data-original-title");
    $(id).removeAttr("title");
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.