soluzione di Jonathan dovrebbe funzionare bene, ma vorrei proporre una soluzione diversa.
Invece di disattivare tutti gli elementi e quindi selezionare quello corrente, perché non tenere traccia dell'elemento corrente 10 e eseguire solo l'operazione su quello?
<ul>
<li>One</li>
<li class="current">Two</li>
<li>Three</li>
</ul>
<script type="text/javascript">
(function() {
var current = $("li.current");
$("li").click(function() {
current.removeClass("current");
current = $(this);
current.addClass("current");
});
}());
</script>
E '"più a lungo" ma anche più efficiente.
La mia soluzione mira ad avere tutto lo stato in JavaScript piuttosto che parzialmente nel DOM. toggleClass
elude questo principio. Non è tanto una questione di "hey sembra un modo davvero lungo e super complesso di fare qualcosa di semplice", c'è un'idea dietro. Se lo stato della tua applicazione diventa più complesso di un solo elemento selezionato, ti imbatterai in problemi se proverai a inserire tale stato nel DOM. Il DOM è solo una "vista", mantieni il tuo stato nel "modello" (il codice JS).
Quello che stai facendo è efficiente quanto può usare i metodi jQuery. –