5

Używam jquery-1.9.1.js i UI jquery-ui-1.10.3.custom.min.js. Po najechaniu myszą na dowolny element formularza pokazuje etykietkę i znika po wyjściu myszy. ale chcę zniknąć z tego narzędzia po zdarzeniu kliknięcia tego elementu, ponieważ w moim bieżącym scenariuszu wyświetla ono etykietę dla przycisku i utrzymuje się nawet po kliknięciu przycisku. dlatego na stronie widać wiele podpowiedzi. Muszę je ukryć natychmiast po kliknięciu (poniżej jest zrzut ekranu).Etykietka Jquery nie znika po kliknięciu pozycji

enter image description here

Użyłem poniżej kod, ale nie działa dla mnie

$(document).click(function() { 
     $(this).tooltip("option", "hide", { effect: "explode", duration: 500 }); 
     }); 

Jak rozwiązać ten pls pomocy.

EDIT

Mam panelu aktualizacji przy użyciu. czy to spowoduje problem?

Odpowiedz

7

Zgodnie z dokumentacją jQueryUI Twój kod zmienia tylko sposób jej zamykania. To, czego chcesz, to closehttp://api.jqueryui.com/tooltip/#method-close.

Jednak być może trzeba trochę zmienić kod, aby działało. Sądząc po twoim kodzie, używasz delegacji (pozwalając, by coś innego zrobiło wskazówkę dla twojego przedmiotu), zamiast stosować ją bezpośrednio do twojego przedmiotu. Zgodnie z zamknięciem dokumentacji nie działa na delegowanych podpowiedziach.

Będziesz chciał coś podobnego do

$('.editButtons').tooltip().click(function() { 
    $('.editButtons').tooltip("close"); 
}) 
+0

dzięki dla reakcji, ale wydaje nie działa dla mnie. :( –

+3

Ponieważ nie dostarczyłeś żadnych innych informacji, jest to tylko ogólna wytyczna.Jeśli twoje guziki nie mają klasy 'editButtons' nie zadziała. Patrz http://jsfiddle.net/aeWvK/ o pomoc – Knollbert

+0

I użyte '$ (dokumentacja) .tooltip (" zamknij ");' –

4

Ugly włamania do zamykania podpowiedź delegowanych (ostatni otwarty)

$('div[id^="ui-tooltip-"]:last').remove(); 
+3

W moim przypadku użyłem '$ ('div [class^=" ui-tooltip "]'). remove();' jeśli określony DOM istnieje/nie istnieje. –

+0

Dobry hack guys @ KAZ-to-USA –

-1
$(document).click(function() { 
    $(this).tooltip("option", "hide", { effect: "explode", duration: 500 }).off("focusin focusout"); 
}); 
+0

Powoduje automatyczne ukrywanie podpowiedzi po pewnym czasie. Myślę, że tego właśnie pytający nie chce. Powinien zamknąć się natychmiast po kliknięciu, jak pisał. – Roland

2

Może być zabrudzony hack, ale może po prostu nie ukryj element etykiety sam, wybierając go za pomocą "ui-tooltip", która jest klasą zastosowaną do kontenera podpowiedzi.

$('body').on("click","element_selector",function(event){ 
$('.ui-tooltip').hide(); 
}); 

Powinieneś zamienić "element_selector" na odpowiedni selektor dla swoich elementów.

2

Wiem, że to stare pytanie, ale wpadłem na ten sam problem i użyłem następującego sposobu, aby go rozwiązać.

Powiedzmy, że użyty w tym celu zainicjowania podpowiedzi:

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

Poniższa zanika tooltip po kliknięciu. Po zaniknięciu usuwa go z DOM (w przeciwnym razie możesz otrzymać wiele ukrytych podpowiedzi).

$('[data-toggle="tooltip"]').click(function() { 
    $('.tooltip').fadeOut('fast', function() { 
     $('.tooltip').remove(); 
    }); 
}); 

Mam nadzieję, że to komuś pomaga!

+0

Działa idealnie ładnie. Proszę zapakować je w zdarzenie 'ready()'. – Roland

+0

musiałem przerobić trochę. '$ ("[Data-przełączania = \" podpowiedzi \ "]") click (function() { \t \t var $ to = $ (this); \t \t $ . (".tooltip ") Fadeout (" fast", function() { \t \t \t $ this.blur(); \t \t}); \t}); 'inny tooltip nigdy nie wróci. – Roland

1

Podjęłam nieco inne podejście, używając jq 1.12, ukrywając wszystkie podpowiedzi ui podczas pokazywania nowego.Testuje się Chrome i IE 11 i IE, 11 (emulacja ie8 poprzez HTTP equiv = "X-UA kompatybilne" zawartość = "ie = 8")

$.widget("ui.tooltip", $.ui.tooltip, { 
    options: { 
     content: function() { 
      $(".ui-tooltip").fadeOut(); /* tooltip genocide */ 
      return $(this).prop('title'); 
     }, 
     show: { 
      effect: "fade", 
      delay: 750 
     } 
    } 
}); 

HTH