2011-01-05 8 views
3

Ich möchte nur die Fähigkeit für einen Benutzer deaktivieren, auf ein Element für eine Bedingung klicken und binden Sie es später für eine andere Bedingung erneut. Hier ist ein Teil des Codes, mit dem ich arbeite:jquery lösen und binden

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

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

    current = $this.parent().index() + 1; 

    if (current == 1){ 
     $("#navigation a:eq(1)").unbind("click"); // remove the click for element 
    } 
    if (current >= 2){ 
     $("#navigation a:eq(1)").bind("click"); // this doesn't work, but i want re-bind the click here. 
    } } 

Was muss ich tun, damit dies funktioniert?

+0

Welche Fehler sind bekommst du? –

+0

Wie wäre es mit false in der Funktion, anstatt zu binden/zu lösen? Außerdem würde eine benannte Funktion die Dinge vereinfachen. –

+0

check out http://api.jquery.com/live/, ich denke, Sie können preventDefault() statt –

Antwort

4

Es klingt, als ob Sie eigentlich nur die erste Navigationsverbindung deaktivieren möchten. Wenn das der Fall ist, möchten Sie einfach:

$("#navigation a:first").click(function() { return false; }); 

als false von einem Event-Handler Rückkehr der Standardaktion des Browsers verhindert (der über den Link) aus auftritt.

Obwohl, wenn der Link angeklickt wird nicht dazu gedacht ist, kann es keinen Link machen, macht es zu einem <span>:

var link = $("#navigation a:first"); 
$("<span>").text(link.text()).attr("class", link.attr("class")) 
    .insertBefore(link); 
link.remove(); 

(unter der Annahme, dass die Klasse Attribut des Link nur würdig ist zu kopierendes Attribut).


Wenn Sie tatsächlich die benutzerdefinierten Handler entbinden möchten Sie schrieb, dann wollen Sie die Handler-Funktion einen Namen für Rebinding so kann es wieder referenziert werden geben:

$('#navigation a').bind('click', onClick); 

function onClick(e) { 
    var $this = $(this); 
    var prev = current; 

    current = $this.parent().index() + 1; 

    if (current == 1){ 
     $("#navigation a:eq(1)").unbind("click"); // remove the click for element 
    } else { 
     $("#navigation a:eq(1)").bind("click", onClick); // use the function again 
    } 
} 
+0

perfekt lösen! Vielen Dank. – scifirocket

Verwandte Themen