2011-01-04 24 views
36

Ich möchte nur die Fähigkeit für einen Benutzer deaktivieren, auf ein Element für eine Bedingung klicken. Hier ist ein Teil des Codes Ich arbeite mit:jquery - Deaktivieren klicken

 $('#navigation a').bind('click',function(e){ 

    var $this = $(this); 
    var prev = current; 

    current = $this.parent().index() + 1; // store the position in current 

    if (current == 1){ 
    $("#navigation a:eq(1)").unbind("click"); // i want to disable the ability to click this element if current is 1 
    } 
    if (current >= 2){ 
    $("#navigation a:eq(1)").bind("click"); // this is wrong, but I want to rebind the click if current is greater than 1. 
    } 

}

Antwort

71

Wenn Sie mit jQuery Versionen 1.4.3+:

$('selector').click(false); 

Falls nicht:

$('selector').click(function(){return false;}); 
+13

Gibt es eine Möglichkeit, die Klick-Funktion, anstatt neu zu definieren es deaktivieren zu wechseln? –

20

Unter der Annahme, dass Sie Klickereignisse verwenden, lösen Sie einfach diese.

Beispiel

if (current = 1){ 
    $('li:eq(2)').unbind("click"); 
} 

EDIT: Sie sind zur Zeit ein Click-Ereignis auf der Liste Bindung irgendwo? Basierend auf Ihrem obigen Kommentar frage ich mich, ob Sie das wirklich tun? Wie aktivierst du den Klick? Ist es nur ein Anker (<a> Tag)? Etwas ausführlichere Informationen helfen uns, Ihre Frage zu beantworten.

UPDATE:

haben einige das Spiel mit dem: eq() Operator. http://jsfiddle.net/ehudokai/VRGfS/5/

Wie ich erwartet hätte, ist es ein 0-Index-Operator. Also, wenn Sie in Ihrer Auswahl des zweiten Elements drehen, wo Sie Ihre Auswahl ist

$("#navigation a") 

Sie würde einfach hinzufügen: eq (1) (der zweite Index) und dann .unbind („Klick“) Also:

if(current == 1){ 
    $("#navigation a:eq(1)").unbind("click"); 
} 

Soll der Trick tun.

Hoffe, das hilft!

+0

bin den Klick in einer Art und Weise wie folgt binden: $ ('# Navigation a'). Bind ('klicken', Funktion (e) {so bin ich mit der Tag. – scifirocket

+0

Oh, ok, das hilft sehr. Es ist wirklich so einfach wie das Hinzufügen des a auf den Selektor ich denke. Also: $ ('# Navigation li: eq (2) a'). unbind ('klicken'); – ehudokai

+0

@scifirocket: Natürlich lag ich falsch, aber wenn Du siehst mein Update oben, ich habe diese Antwort getestet :). – ehudokai

5

Sie unbind Methodenhandler entfernen können, die angebracht wurde ...

if (current = 1){ 
    $('li:eq(2)').unbind('click'); 
} 

können Sie überprüfen, was tun entbinden können? Unbind manual

+0

eigentlich, ich brauchte wahrscheinlich so etwas wie $ ('#navigation li: eq (2)'). unbind ('click'); aber das funktioniert auch nicht. Ich versuche, das click-Ereignis für ein bestimmtes Element einer Liste zu deaktivieren. – scifirocket

+0

@scifirocket: Verbindest du ein Click-Ereignis irgendwo in deinem Code? Oder verwenden Sie nur einen Anker, den Sie deaktivieren möchten? – ehudokai

10

Raw Javascript kann das Gleiche erreichen ziemlich schnell auch:

document.getElementById("myElement").onclick = function() { return false; } 
+1

Ich nahm an, dass es ein Tippfehler war, also fügte ich dem jQuery-Selektor das "#" hinzu;) –

+0

Obwohl ... das '.onclick' auch nicht für ein jQuery-Objekt funktioniert. Sie benötigen '[0]' oder '.get (0)'. –

+0

Danke! Ich verwende normalerweise rohe JS. Lass mich bearbeiten. – Ben

Verwandte Themen