2010-09-24 24 views
37

Mam kilka linków wyświetlanych na stronie. Chciałbym włączyć/wyłączyć je na podstawie innych zdarzeń na stronie. Czy jest sposób na to zrobić z jQuery?Jak dynamicznie włączać/wyłączać łącza za pomocą jQuery?

+0

czy używasz html5? lub xhtml? – RobertPitt

+0

@robertpitt Dlaczego tak jest? – Yahel

+1

ponieważ jeśli używasz html5, możesz użyć 'data- *' do przechowywania danych jako łańcuchów, abyś mógł przechowywać href wewnątrz 'data-href' i zamienić bieżący na' # ', a następnie utworzyć wtyczkę do przełączania to, takie jak '$ ('. disabled'). DisableClick();' możesz to zrobić za pomocą preventDefault, ale ja tylko wytłumaczyłem sposób na html5. – RobertPitt

Odpowiedz

57
$('selector_for_links_to_disable').bind('click', function(e){ 
     e.preventDefault(); 
}) 

i umożliwienia:

$('selector_for_links_to_enable').unbind('click') 
+0

Próba odłączenia, gdy nadal jest funkcją wiązania, nie działa. Następnie musisz użyć "return true;". –

4

Można zrobić coś takiego:

$('.links').click(function(e){ 
    if([some conditions]){ 
    e.preventDefault(); 
    } 
}); 

Pamiętaj, aby pokazać, że już nie działa jakoś inaczej użytkownicy będą się mylić, lol.

2

To zależy od tego, co masz na myśli przez "wyłącz".

to pozwoli im robić nic:

$("A").click(function() { return false; }); 
+0

Myślę, że OP oznacza zmianę ich z linku na tekst, aby nie pojawiały się jako łącza. W przeciwnym razie na miejscu! – Chris

+1

return false nie jest zalecane. Zamiast tego użyj e.preventDefault(). – dekomote

+0

Cóż, każdego dnia uczysz się czegoś nowego. dzięki. –

1
$(document).delegate('.links', 'click', function() { 
    if ([your condition is true]) { 
    return false; 
    } 
}) 

delegacja jest lepsze niż wozy, bo można nazwać je przed dom jest załadowany

1

Ci zrobić coś takiego:

<script> 
    $(document).ready(function() { 
     $('input#disableall').live('click', function(){ 
      $('a').attr('class', 'disabled'); 
      alert('All links are disabled.'); 
     }); 


     $('input#enableall').live('click', function(){ 
      $('a').attr('class', 'enabled'); 
      alert('All links are enabled.'); 
     }); 

     $('a.disabled').live('click', function(event){ 
      event.preventDefault(); 
     }); 
    }); 
</script> 

<a href='http://www.google.com'>Google<a/> 
<a href='http://www.yahoo.com'>Yahoo<a/> 
<a href='http://www.hotmail.com'>Hotmail<a/> 

<input type='button' id='disableall' value='Disable Links' /> 
<input type='button' id='enableall' value='Enable Links' /> 
0

Kiedy daję funkcji do przycisków przez jQuery, chciałbym to zrobić:

indice = ''; 

$('myLink').live('click',function() { 
    if (indice !== 'value1'){ 

     // your code 
    } 

    indice = 'value1'; 
    return indice; 

}); 

z tym, można uzyskać funkcję tylko przy pierwszym naciśnięciu przycisk de. Teraz wystarczy ustawić indeks różnej wartości1 na link działa ponownie

Powiązane problemy