2009-07-23 7 views
8

ich den Link beim Laden deaktivieren möchten, für den angegebenen Code unterJquery Link-Tag aktivieren deaktivieren

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

Ich habe versucht, es mit den Codes unten, aber es hat nicht funktioniert

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

und

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

Können Sie bitte einen Beispielcode angeben. Wie die Verbindung, die es produzierte. –

+0

mögliches Duplikat von [wie Anchor-Tags mit jquery aktiviert oder deaktiviert werden] (http://stackoverflow.com/questions/1164635/how-to-enable-or-disable-anchor-tag-using-jquery) –

Antwort

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

return false;

wird das Standardereignis von auftretenden und verhindern und auch verhindern, dass das Ereignis aus sprudeln

So zwischen diesen beiden chosing auf Ihre Nutzung abhängt. Wenn Sie die Standard-Aktion zu stoppen und auch die Veranstaltung dann zu sprudeln müssen verwenden prevent

+0

Wenn Sie definieren Es ist so, dass Sie es nicht leicht lösen können, wenn Sie später das Standardverhalten wiederherstellen wollen. – RaYell

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

    return false; 
} 

Wenn Sie es

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

yo Anruf deaktivieren möchten, wenn Sie deaktiviert Link rufen Sie aktivieren möchten

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

Die beste Lösung, die ich je gesehen habe! cool! Vielen Dank! – Burjua

+0

Das ist die beste Antwort, die ich jemals gesehen habe. – User16119012

2

ich mit einem Hybrid aus RaYell der und phoenix-Lösung gehen würde, jQuery's namespacing in den Mix:

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

dieses Ereignis zu lösen, sowie andere relevante Ereignisse (jeglicher Art), die Sie Gruppe mit dem .killink Namespace, können Sie dies gerannt:

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

Wie Phönix wies darauf hin, mit return false verhindert, dass das Ereignis sprudelt. preventDefault() hat den zusätzlichen Vorteil, extrem explizit zu sein (anders als return false, was je nach Kontext viele verschiedene Dinge bedeuten kann).

Verwandte Themen