Mam tag <a href="#"> Previous </a> 1 2 3 4 <a href="#"> Next </a>
i chcę, aby w pewnych warunkach ten tag był całkowicie wyłączony.
Kod z komentarzy (tak jest generowany link)
if (n_index != n_pages)
a = a+'<li><a href="#" onclick="javascript:paginateAjaxPage('+(n_index+1) +','+stype+');">></a></li><li><a href="#" onclick="javascript:paginateAjaxPage('+n_pages+','+stype+');" >>></a></li>';
else
a = a+'<li><a style="cursor: pointer;" onclick="return false;">></a></li><li><a style="cursor: pointer;" onclick="return false" >>></a></li>';
a = a+'</ul></div>';
javascript
html
Wojownik
źródło
źródło
Odpowiedzi:
Spróbuj tego, jeśli nie chcesz, aby użytkownik przekierowywał po kliknięciu
źródło
<a href='javascript:;'>I am a shorter useless link</a>
?\t
, linii\n
i spacji, aby zobaczyć, jak kod jest złożony i ładny (dla kogo? Przeglądarka), a teraz martwicie się o 7 bajtówvoid(0)
i / lub;
o Boże.Millions millions of tabs\t, line feeds\n and spaces
- tak, to sprawia, że kod jest łatwy do zrozumienia, avoid(0)
nie jest. Dlatego należy to usunąć lub jak najkrótsze. Np. Tutaj krócej - służy do zrozumienia (czytania), a nie do "kompresji" lub ekomonii bajtów. :)możesz dezaktywować wszystkie linki na stronie z tą klasą stylu:
teraz oczywiście sztuczka polega na dezaktywowaniu linków tylko wtedy, gdy trzeba, oto jak to zrobić:
użyj pustej klasy A, na przykład:
wtedy gdy chcesz dezaktywować linki, zrób to:
UWAGA: W niektórych przeglądarkach nazwy reguł CSS są przekształcane na małe litery, a ten kod jest wrażliwy na wielkość liter, więc lepiej używaj do tego nazw klas małych liter
aby ponownie aktywować linki:
sprawdź tę stronę http://caniuse.com/pointer-events, aby uzyskać informacje na temat zgodności przeglądarek
Myślę, że to najlepszy sposób na zrobienie tego, ale niestety IE, jak zawsze, na to nie pozwoli :) i tak to piszę, ponieważ myślę, że zawiera informacje, które mogą być przydatne, a niektóre projekty używają znanej przeglądarki , na przykład podczas korzystania z widoków internetowych na urządzeniach mobilnych.
jeśli chcesz tylko dezaktywować JEDNO łącze (zdaję sobie tylko sprawę, że było to pytanie), użyłbym funkcji, która ręcznie ustawia adres URL bieżącej strony, lub nie, na podstawie tego warunku. (jak rozwiązanie, które zaakceptowałeś)
to pytanie było DUŻO łatwiejsze niż myślałem :)
źródło
pointer-events:none;
że nigdy nie wiedziałem o tej metce, bardzo się przydała!Możesz po prostu podać pusty hash:
lub jeśli to nie wystarczy do „wyłączenia”, użyj modułu obsługi zdarzeń:
źródło
1
jeśli zostanie dodany później.Spróbuj tego za pomocą jQuery:
źródło
źródło
Ten sposób jest dla mnie łatwiejszy do wdrożenia. I ma tę zaletę, że ty js. Nie znajduje się w Twoim html, ale w innym pliku. Myślę, że bez rozpięcia. Oba wydarzenia są nadal aktywne. Niepewny. Ale w pewnym sensie potrzebujesz tylko tego jednego wydarzenia
źródło
unbind
konieczne? Wierzęreturn false
lube.preventDefault()
wystarczyłoby.MDN zaleca nadpisanie
element.removeAttribute(attrName);
atrybutu null (lub innej wartości), jeśli chcesz go wyłączyć. W tym przypadku tak by byłoelement.removeAttribute("href");
https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute
źródło
Najłatwiejszym sposobem wyłączenia linku jest po prostu nie pokazywanie go. Uruchom tę funkcję za każdym razem, gdy chcesz sprawdzić, czy twój warunek jest spełniony, aby ukryć przycisk Poprzedni (zamień na
if (true)
swój warunek):Następnie biegnij
testHideNav()
za każdym razem, gdy musisz sprawdzić, czy twój stan się zmienił.źródło
Zamiast tego użyj span i javascript onclick. Niektóre przeglądarki „skaczą”, jeśli masz link i „#” href.
źródło
javascript: void(0);
lubjavascript:;
. Jeśli renderujesz z Railsów, po prostu wyrenderuj zakres w miejscu, w którym chcesz go wyłączyć.To też jest możliwe:
Link nigdzie nie przechodzi przez twoją funkcję zostanie wykonana.
źródło
Miałem podobną potrzebę, ale moją motywacją było zapobieganie dwukrotnemu kliknięciu linku. Dokonałem tego za pomocą jQuery:
Kod HTML wygląda następująco:
źródło
Zatem powyższe rozwiązania powodują, że łącze nie działa, ale nie pokazuje (AFAICT), że łącze jest już nieaktualne. Mam sytuację, w której mam serię stron i chcę wyłączyć (i pokazać, że jest wyłączone) łącze wskazujące na bieżącą stronę.
Więc:
Spowoduje to przeglądanie listy linków, znalezienie tego, który wskazuje na bieżącą stronę (n_root3 może być lokalną rzeczą, ale wyobrażam sobie, że
document
musi mieć coś podobnego) i zastępuje łącze treścią tekstową łącza.HTH
źródło
Dziękuję wam wszystkim...
Mój problem rozwiązał poniższy kod:
źródło
Zainstaluj tę wtyczkę dla jquery i używaj jej
http://plugins.jquery.com/project/jqueryenabledisable
Pozwala wyłączyć / włączyć prawie każde pole na stronie.
Jeśli chcesz otworzyć stronę pod jakimś warunkiem, napisz funkcję skryptu java i wywołaj ją z href. Jeśli warunek jest spełniony, otwórz stronę, w przeciwnym razie nic nie rób.
kod wygląda następująco:
Możesz również umieścić łącze w elemencie div i ustawić właściwość display atrybutu Style na none. to ukryje div. Np.
Spowoduje to ukrycie linku. Użyj przycisku lub obrazu, aby ten element div był teraz widoczny, wywołując tę funkcję w onclick jako:
Możesz również umieścić tag id w tagu html, więc tak będzie
I uzyskaj ten identyfikator w swoim javascript za pomocą
Jeden z nich na pewno musi działać haha
źródło
Inna metoda wyłączenia linku
tag anchor bez href zareagowałby jako wyłączony / zwykły tekst
zamiast
<a href="#"> with href </a>
zobacz jsFiddel
mam nadzieję, że to jest pomocne.
źródło
Zamiast void możesz również użyć:
źródło
0) lepiej pamiętaj, że niektóre przeglądarki „skaczą”, jeśli masz link i „#” href. Najlepszym sposobem byłby niestandardowy JavaScript
1) Jeśli szukasz niestandardowego kodu JavaScript , oto on:
2) Możesz rozważyć unikanie używania następujących
lub
Ponieważ pseudo-protokół javascript może w niektórych przeglądarkach ustawić stronę w stan oczekiwania, co może mieć nieoczekiwane konsekwencje. IE6 jest z tego znana. Ale jeśli nie obchodzi cię IE6, a wszystko testujesz - może to być dobre rozwiązanie.
3) Jeśli już masz
jQuery
ibootstrap
w swoim projekcie, możesz spojrzeć na ich użycie w następujący sposób:gdzie
.disabled
klasa pochodzi z bootstrapu.Qupte z witryny bootstrap ( tutaj )
i
custom JavaScript
pokazano w sekcji 1źródło
Poniżej kod wyłączonych linków:
innym bardzo prostym rozwiązaniem jest:
Pierwsze rozwiązanie jest skuteczne.
źródło