2009-08-23 7 views
2
$('.tab').click(function() { 
    $(this).unbind("click"); 
    var classy = $(this).attr("class").split(" ").splice(-1); 
    var ihtml = $('.content.'+classy).html(); 
    $('#holder').html(ihtml); 
    $('.tab').removeClass('highlight'); 
    $(this).addClass('highlight'); 
    $(this).unbind("click"); 
}); 

Also in diesem Code habe ich im Grunde eine Registerkarte Schnittstelle. Wenn ich erneut auf die Registerkarten klicke, verschwindet die Information im #halter. Was ich also tun möchte, ist das Aufheben der Klicks, wenn der Benutzer auf die Registerkarte klickt und sie dann beim Wechseln zwischen den Registerkarten bindet. Wie kann ich das in meinen Code integrieren?Ein div trennen und dann später binden

Danke.

+0

Können Sie Ihren Text mit dem Code-Button kodieren? Macht es angenehmer zu lesen :-) –

+0

Heh, Entschuldigung, ich dachte ich hätte. Es ist alles Code-Box jetzt! : D – Johnny

Antwort

5

Sie könnten versuchen, eine Klasse ‚aktiv‘ Zugabe, wenn ein Reiter (in der Regel gute Praxis) angeklickt wird, dann live() jQuery verwenden, um einige fancy stuff zu tun ...

$('.tab:not(.active)').live('click', function() { 
    $('.tab').removeClass('active'); 
    $(this).addClass('active'); 
    ... 
}); 

Ich denke, dass der Trick funktioniert.

+0

Oh Danke das funktioniert perfekt. Ich bin so ein Neuling, um jquery, es ist schön, manchmal Hilfe zu bekommen :) – Johnny

+0

Hehe, das ist, was SO ist ;-) – JorenB

0

auch, können Sie versuchen, diese Art von Syntax zu verwenden (die schneller sein sollte und mehr Speicher & cpu freundlich):

$('.tab').click(function(){ 
var t=$(this); 
if(t.hasClass('active')){return false;} 
$('.active').removeClass('active'); 
t.addClass('active'); 
/* do some stuff here */ 
return false; 
}); 

Oder noch besser, zu vermeiden, sich zu wiederholen:

$('.tab').click(function(){ 
var t=$(this); 
if(!t.hasClass('active')){ 
$('.active').removeClass('active'); 
t.addClass('active'); 
/* do some stuff here */ 
} 
return false; 
}); 

Warum ist das schneller & cpu freundlich? Weil du das nur einmal bindest. Wenn Sie die Bindungsmethode live verwenden, wird der Browser auf Änderungen im DOM warten.

+0

Ist es das? Ich dachte, 'live()' ist im Allgemeinen eine bessere Lösung im Umgang mit mehreren Elementen, da Ereignisdelegierung verwendet wird. 'Live()' fügt nur ein Ereignis hinzu, während das Binden von 'click()' an x ​​Registerkarten x Ereignisse erzeugt . Habe ich recht? – JorenB