2010-10-23 14 views
5

En jQuery, ¿hay alguna otra forma de escribir esto?Métodos abreviados jQuery/técnica para alternar clases

Versión 1

 $("#date_filter-enable").click(function() { 

     $("#search_dates").removeClass("hidden"); 
    }); 

    $("#date_filter-disable").click(function() { 

     $("#search_dates").addClass("hidden"); 
    }); 

Versión 2

 $("input[id^=date_filter-]").click(function(e) { 

     var clicked = $(e.target); 
     var id = clicked.attr("id").split("-"); 
     var action = id[1]; 

     if(action == "enable") 
     $("#search_dates").removeClass("hidden"); 
     else 
     $("#search_dates").addClass("hidden"); 
    }); 

Estoy acostumbrado a la codificación como esto ... pero quiero saber si hay mucho manera eficaz y fácil de leer, fresco de la escritura es ... como alternar, encadenar ... las mejores prácticas no sé ^^

¡Aprecio que lo compartas! ^^

+1

En lugar de '$ ("# search_dates") addClass ("oculto");. ', Es posible que desee utilizar' $ ("# search_dates") ocultar() ' – Chetan

Respuesta

4

Debe utilizar el método toggleClass.

$("input[id^=date_filter-]").click(function(e) { 
    $("#search_dates").toggleClass("hidden"); 
}); 
+0

culo mal. ! Gracias jball! – Woppi

0
$("input[id^=date_filter-]").click(function(e) { 
     if($(this).attr("id").split("-")[1] == "enable") 
     $("#search_dates").removeClass("hidden"); 
     else 
     $("#search_dates").addClass("hidden"); 
    }); 
+0

Intencionalmente creé variables para dividir, porque encuentro difícil de leer para mí ... ¡pero gracias por su contribución! Lo aprecio ^^ – Woppi

Cuestiones relacionadas