2013-07-15 21 views
5

Mam sytuację, w której po dwukrotnym kliknięciu przycisku podświetla cały przycisk, co jest dość denerwujące, więc próbowałem to naprawić, dodając preventDefault() do funkcji zatrzymania podkreślając występujący, choć nie mogę się powstrzymać to dzieje :(
Czy ktoś proszę mi powiedzieć, dlaczego tak jest ignorowanie event.preventDefault(); i podkreślając przycisk/tekst i tak ?:JS zatrzymanie podświetlania pojawiające się na (podwójne) kliknięcie

HTML:

<div class="loading-boundary"> 
    <div class="redesign-due-date-container"> 
     <div class="property due_date flyout-owner overdue value-set" style="margin-left:-3px"> 
      <div class="property-name"> 
       <span data-icon="calendar" class="calendar glyph toolbar-icon prod"></span> 
       <span class="grid_due_date overdue">Yesterday</span> 
      </div> 
     </div> 
    </div> 
</div> 

JS:

$(".property.due_date").click(function(event) { 
    event.stopPropagation(); 
    event.preventDefault(); 

    var e = $(".show-full-duedate"); 

    if (e.css("display") != "block") { 
     $(this).addClass("focused"); 
     e.css("display", "block"); 
    } else { 
     $(this).removeClass("focused"); 
     e.css("display", "none"); 
    } 

    return false; 
}); 

Używam najnowszej wersji przeglądarki Chrome do przetestowania.
Również ustawienie opcji CSS w celu zatrzymania podświetlania powoduje zatrzymanie podświetlania przycisku, nawet jeśli nie zostało kliknięte, więc nie jest to opcja.

+0

Co dokładnie masz na myśli, podkreślając? Czy mówimy o wybranym tekście lub stylu CSS? – Jnatalzia

+0

Wybiera tekst "Wczoraj" – Seb

+0

Ustawiłem ten http://jsfiddle.net/wEf53/, aby zademonstrować, jeśli dwukrotnie klikniesz na słowo "Wczoraj", to jeszcze je podświetli. – Seb

Odpowiedz

5

Spróbuj:

$(".property.due_date").on('click', function(event) { 
    event.preventDefault(); 

    var elem = $(".show-full-duedate"); 

    elem.toggleClass('focused', elem.is(':visible')) 
     .toggle(elem.is(':visible')) 

    document.onselectstart = function() { return false; }; 
    event.target.ondragstart = function() { return false; }; 
    return false; 
}); 

FIDDLE

Trzy ostatnie linie uniemożliwi wybór.

+0

Yay, to działało :) tysm – Seb

+0

Chociaż 'var elem = $ (" show-full-duedate "); elem.toggleClass ('focused', e.is (': visible')) .toggle (e.is (': visible')) 'bit nie działa – Seb

+0

Zmieniłem to trochę, ale musiałem Zgadnij, co to było, gdy próbujesz zrobić, ale wydawało ci się, że używałeś klas i widoczności w oparciu o widoczność elementów itp. – adeneo

0

Zakładając, że mówisz o wyróżnianiu elementu po dwukrotnym kliknięciu.

Znalazłem inny post z pytaniem na podobne pytanie. - link

Wygląda na to, że nie można tego w prosty sposób zabronić, ale można "wybrać" element po jego wybraniu.

Mam nadzieję, że to pomoże.

Powiązane problemy