2009-07-23 18 views
8

Chcę wyłączyć link podczas załadunku, na kod podany poniżejjQuery Link tag pozwalają wyłączyć

<span id="addlink">"<%= f.add_associated_link('Add Task', @project.tasks.build, :class=>"add") %></span> 

próbowałem go z kodami poniżej, ale to nie działa

$("#addlink").attr("disabled", "disabled"); 

i

$("a.add").hide(); 
+0

Proszę podać przykładowy kod. Podobnie jak link, który wytworzył. –

+0

możliwy duplikat [jak włączyć lub wyłączyć znacznik kotwicy za pomocą jquery] (http://stackoverflow.com/questions/1164635/how-to-enable-or-disable-anchor-tag-using-jquery) –

Odpowiedz

4
$('#addlink').click(function(e) { 
    e.preventDefault(); 
    //do other stuff when a click happens 
}); 

return false;

uniemożliwi domyślne zdarzenie z występujących i a także zapobiec zdarzenie od propagacji się

Więc chosing między nimi zależy od zastosowania. Jeśli chcesz, aby zatrzymać akcję domyślną, a także muszą wypłynąć zdarzenie następnie użyć preventDefault

+0

Jeśli zdefiniujesz to tak, że nie można go łatwo rozwiązać, jeśli później nie przywrócisz domyślnego zachowania. – RaYell

27
function disableLink(e) { 
    // cancels the event 
    e.preventDefault(); 

    return false; 
} 

Kiedy chcesz go wyłączyć yo połączenia

$('#addlink').bind('click', disableLink); 

Jeżeli chcesz włączyć wyłączoną odnośnik wywołaniu

$('#addlink').unbind('click', disableLink); 
+0

Najlepsze rozwiązanie, jakie kiedykolwiek widziałem! chłodny! dzięki! – Burjua

+0

To jest najlepsza odpowiedź, jaką również widziałem. – User16119012

2

pójdę z hybryda RaYell i rozwiązania Phoenix, dodając do mieszanki jQuery's namespacing:

$('#addlink').bind('click.killlink',function(event){ 
    event.preventDefault(); 
    // You can do any additional onClick behavior here 
}); 

Aby rozwiązać tego zdarzenia, jak również wszelkie inne zdarzenia związane (dowolnego typu), że grupa z nazw .killink, można uruchomić ten pan:

$('#addlink').unbind('.killlink'); 

Jak feniks wskazał, używając return false zapobiegnie bulgotaniu. preventDefault() ma dodatkową zaletę, że jest bardzo jednoznaczny (w przeciwieństwie do return false, co może oznaczać wiele różnych rzeczy w zależności od kontekstu).