Foros del Web » Programando para Internet » Javascript » Frameworks JS »

existe una una manera mas elegante?

Estas en el tema de existe una una manera mas elegante? en el foro de Frameworks JS en Foros del Web. Hola Tengo un código que funciona, sin embargo siento que puede ser mejorado, es decir, hacer lo mismo con menos código. Código HTML: $(document).ready(function() { ...
  #1 (permalink)  
Antiguo 03/08/2012, 12:44
Avatar de fullmental  
Fecha de Ingreso: octubre-2004
Ubicación: México DF, Xochimilco
Mensajes: 593
Antigüedad: 20 años, 1 mes
Puntos: 3
existe una una manera mas elegante?

Hola

Tengo un código que funciona, sin embargo siento que puede ser mejorado, es decir, hacer lo mismo con menos código.


Código HTML:
$(document).ready(function() {
$('a[href*=#]').click(function(){
	

	var sectionHash = $(this).attr('href');
	
	var firstCharacter = sectionHash.substring(1,2);
	var hashTail = sectionHash.substring(2);
	var forceToCamel = firstCharacter.toUpperCase();
	var sectionName = sectionHash.replace('#', 'box')
	var target = "box"+forceToCamel+hashTail;
	
	
	$("#inputBox").html(target);
	
	
});
Se puede acortar éste código? le última línea obvio sólo es para probar la funcionalidad.

Lo que hace es tomar el href="#seccion" a algo como boxSeccion... para después utilizarlo con jquery y hacer algunos efectos especiales ;)
  #2 (permalink)  
Antiguo 03/08/2012, 13:04
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 12 años, 5 meses
Puntos: 127
Respuesta: existe una una manera mas elegante?

Ahora, que estoy algo pedo, no puedo plantear demasiado desde el punto de vista brillante, pero si que puedo sugerirte cosas como

$(this).attr('href').substring(1,2).toUpperCase()

Ahorras líneas en una sóla línea.

Si vas a usar el mismo método varias veces puedes

(function(){
ff=$.fn.click;
$.fn.click=function(){
href=$(this).attr('href');
....
ff.apply(this,arguments);};
})();

Donde insertas nuevos elementos que corresponden al prototipo de jQuery en la ejecución actual del script.

Es una idea experimental, no la he comprobado, por lo que tendrás que testarlo.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 03/08/2012 a las 13:18
  #3 (permalink)  
Antiguo 03/08/2012, 13:18
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 16 años, 2 meses
Puntos: 187
Respuesta: existe una una manera mas elegante?

Yo lo haría así:
Código Javascript:
Ver original
  1. $(document).ready(function() {
  2. $('a[href*=#]').click(function(){
  3.     var sHash = $(this).attr('href').replace("#","");
  4.     sHash = "box" + sHash.charAt(0).toUpperCase() + sHash.slice(1);
  5.     $("#inputBox").val(sHash);
  6.    
  7.    
  8. });
  9. });

Ejemplo en funcionamiento: http://jsfiddle.net/gte6Y/
  #4 (permalink)  
Antiguo 03/08/2012, 14:03
Avatar de fullmental  
Fecha de Ingreso: octubre-2004
Ubicación: México DF, Xochimilco
Mensajes: 593
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: existe una una manera mas elegante?

Muchas gracias!!

Definitivamente queda mejor cualquiera de las sugerencias.

Saludos.

Etiquetas: funcion, html, input, manera
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:26.