Próbuję uniemożliwić przeglądarce korzystanie z :hover
efektu CSS za pomocą JavaScript.
Po ustawieniu a
i a:hover
style w moim CSS, ponieważ chcę skutek najechania, jeśli JS nie jest dostępna. Ale jeśli JS jest dostępny, chcę nadpisać mój efekt najechania kursorem CSS na płynniejszy (na przykład używając wtyczki kolorów jQuery).
Próbowałem tego:
$("ul#mainFilter a").hover(
function(e){ e.preventDefault(); ...do my stuff... },
function(e){ e.preventDefault(); ...do my stuff... });
Próbowałem też z tym return false;
, ale to nie działa.
Oto przykład mojego problemu: http://jsfiddle.net/4rEzz/ . Łącze powinno po prostu zniknąć bez szarzenia.
Jak wspomniał Fudgey, obejściem byłoby zresetowanie stylów aktywowania przy użyciu, .css()
ale musiałbym nadpisać każdą pojedynczą właściwość określoną w CSS (patrz tutaj: http://jsfiddle.net/raPeX/1/ ). Szukam generycznego rozwiązania.
Czy ktoś wie, jak to zrobić?
PS: Nie chcę nadpisywać każdego stylu, który ustawiłem dla najechania.
źródło
<noscript>
rozwiązanie. Po prostu umieszczasz<link>
tagi w swoim<noscript>
, zamiast<style>
tagów. Moje rozwiązanie pozwala jednak zachować wszystko w jednym pliku arkusza stylów, a nie w wielu plikach.Użyj drugiej klasy, do której przypisano tylko dymek:
HTML
CSS
Teraz możesz użyć Jquery do usunięcia klasy, na przykład jeśli element został kliknięty:
JQUERY
Mam nadzieję, że ta odpowiedź jest pomocna.
źródło
Możesz samodzielnie manipulować arkuszami stylów i regułami arkuszy stylów za pomocą javascript
Uczynienie atrybutów! Ważnymi i uczynienie ich ostatnią definicją CSS powinno nadpisać wszelkie poprzednie definicje, chyba że jest to bardziej szczegółowe. W takim przypadku może być konieczne wstawienie większej liczby reguł.
źródło
<link>
tag arkusza stylów noscript wewnątrz<noscript>
elementu? To zadziałałoby, prawda?Error: The operation is insecure.
Jest to podobne do odpowiedzi aSeptik, ale co z tym podejściem? Owiń kod CSS, który chcesz wyłączyć, używając JavaScript w
<noscript>
tagach. W ten sposób, jeśli javaScript jest wyłączony,:hover
zostanie użyty CSS , w przeciwnym razie zostanie użyty efekt JavaScript.Przykład:
źródło
Użyłem
not()
operatora CSS iaddClass()
funkcji jQuery . Oto przykład, kiedy klikniesz element listy, nie będzie on już najeżdżać:Na przykład:
HTML
CSS
jQuery
źródło
Użyłbym CSS, aby zapobiec zmianie wyglądu linku przez zdarzenie: hover.
Ten prosty CSS oznacza, że linki zawsze będą czarne i nie będą podkreślone. Nie potrafię powiedzieć na podstawie pytania, czy jedyną rzeczą, którą chcesz kontrolować, jest zmiana wyglądu.
źródło
Polecam zastąpić wszystkie
:hover
właściwości,:active
gdy wykryjesz, że urządzenie obsługuje dotyk. Po prostu wywołaj tę funkcję, gdy zrobisz to jakotouch()
.źródło
Spróbuj po prostu ustawić kolor linku:
Edytuj: lub jeszcze lepiej, użyj CSS, jak zasugerował Christopher
źródło
a
zamiast tego,ul#mainFilter a
czy to masz na myśli, czy też mówisz, że każdy link na stronie ma inny kolor?a.jsOverride:hover
niej wszystkie cechy css, więc js musiałby po prostu dodać tęjsOverride
klasę do wszystkich linków, gdy strona się wczyta ...Właściwie innym sposobem rozwiązania tego problemu może być nadpisanie CSS z
insertRule
.Daje możliwość wstrzykiwania reguł CSS do istniejącego / nowego arkusza stylów. W moim konkretnym przykładzie wyglądałoby to tak:
Demo z moim oryginalnym przykładem sprzed 4 lat: http://jsfiddle.net/raPeX/21/
źródło