2009-08-07 9 views
1

Sagen wir, ich möchte alle Links auf einer Seite zu handhaben, über eine spezielle Funktion, so dass ich tun:Unbinding spezifische jquery Elemente

$('a').bind("click", handleLinks); 

Aber ich habe eine navbar mit Links, die ich anders behandelt werden sollen. Deshalb möchte ich, dies zu tun, was nicht funktioniert:

$('#navbar a').unbind("click", handleLinks); 

Ich will nicht speziell auf die navbar in der ersten Anweisung ausschließen, weil Inhalt dynamisch geladen wird, so dass die Elemente, die ich überwachen müssen für Klicks ändern abhängig vom Inhalt. Grundsätzlich möchte ich in der Lage sein, bestimmte Teilmengen von Elementen dynamisch zu lösen, und zwar aus der größeren anfänglichen Teilmenge von Elementen, die ursprünglich gebunden waren.

Irgendwelche Vorschläge?

:: UPDATE ::

Meine aufrichtige Entschuldigung, sind Sie alle richtig - es ist etwas flippig mit dem Auftrag war die Befehle genannt wurden. Es tut uns leid!

+0

Ich habe zu meinem Beitrag einig Testcode als Demo Ich bin so ziemlich das gleiche tun, und ich habe kein Problem dar. Gibt es eine Chance, dass Sie Umgebungscode veröffentlichen könnten, damit wir versuchen können, Fehler zu beheben? –

+0

Froh, dass es funktioniert hat! –

Antwort

0

Seltsam - das sieht richtig aus. Hast du getestet, dass deine erste Aussage das aussucht, was du denkst?

http://docs.jquery.com/Events/unbind

Editier- Ok habe ich eine Testseite

<body> 
     <a href="#" class="a">Test A</a> 
     <a href="#" class="a">Test A</a> 
     <a href="#" class="a">Test A</a> 
     <a href="#" class="b">Test B</a> 
     <a href="#" class="a">Test A</a> 
     <a href="#" class="b">Test B</a> 


     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
     <script type="text/javascript"> 

       $(function(){ 

        $('a').bind("click", testClick); 
        $('a.b').unbind("click", testClick); 


       }); 

       function testClick(){ 
        alert("Link Clicked"); 
       }; 
    </script> 
    </body> 

Dies funktioniert gut, aber wenn ich meine Funktion inline baute ich aus ausgewählten Elemente alle Ereignisse zu lösen benötigt, es zu entfernen. Nicht sicher, ob das zutrifft oder nicht, aber erwähnenswert.

Macht es Ihnen etwas mehr Code bekannt> es sieht aus, als könnte etwas anderes falsch sein.

2

Ich stimme apocalypse9, dass es scheint, als was Sie haben, sollte funktionieren. Vielleicht hätte ein anderer Ansatz bessere Ergebnisse ... Wie wäre es mit dem: not selector mit live(). Live wird sicherstellen, dass der Selektor mit dynamisch hinzugefügten Elementen funktioniert.

$('a:not(#navbar a)').live("click", handleLinks); 

http://docs.jquery.com/Selectors/not#selector

http://docs.jquery.com/Events/live

+0

"Ich möchte die Navbar in der ersten Aussage nicht ausdrücklich ausschließen" –

+0

Danke Scott, ich habe die Antwort bearbeitet. Obwohl es für ihn immer noch nicht funktioniert, wenn die ID #navbar dynamisch ist, klingt es vielleicht so. –

0
$('a').not('#navbar a').bind('click', handleLinks);