Foros del Web » Programando para Internet » Jquery »

Imitar selectores de jquery

Estas en el tema de Imitar selectores de jquery en el foro de Jquery en Foros del Web. Como puedo imitar los selectores de jquery? para poder seleccionar por id, class, tagname y los selectores avanzados (seleccionar varios elementos a la vez) ? ...
  #1 (permalink)  
Antiguo 28/03/2011, 17:59
Avatar de AlejandroMtzRmz  
Fecha de Ingreso: febrero-2011
Mensajes: 81
Antigüedad: 13 años, 2 meses
Puntos: 4
Pregunta Imitar selectores de jquery

Como puedo imitar los selectores de jquery? para poder seleccionar por id, class, tagname y los selectores avanzados (seleccionar varios elementos a la vez) ? Lo mas que pude lograr fue seleccionar por id de la siguiente manera:

Código Javascript:
Ver original
  1. var $ = function(selector){
  2.  
  3. if(/^#/.test(selector)){ //revisa si comienza con #
  4.  
  5. selector = selector.replace("#",""); //elimina el caracter #
  6. selector = document.getElementById(selector); //devuelve el objeto
  7.  
  8. }
  9.  
  10. return selector; //devuelve el siguiente codigo: document.getElementById(selector);
  11. };

Con ese codigo ya puedo seleccionar del modo $('#id') pero no creo que me sirva para hacer selectores avanzados, etc. alguna idea?
  #2 (permalink)  
Antiguo 28/03/2011, 18:16
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Imitar selectores de jquery

buenas...

aunque no lo he hecho, seguramente lo que hace jquery es analizar el string como si fuese un parser de css. es decir, tienes una sintaxis la analizas segun los token que se le pasa. tienes que identificar varias partes de la sintaxis: separacion de tokens (la coma), selector por clases (el punto), selector por elemento (secuencia de caracteres alfanumericos), selector por id (el simbolo #), y asi sucesivamente analizas el script. por cierto, con la llegada de html5 se ha creado el modulo selector api el cual es practicamente eso mismo. solo que no todos los navegadores lo implementan.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 28/03/2011, 18:53
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Imitar selectores de jquery

Que tal AlejandroMtzRmz,

Te comento que podes utilizar el selector engine standalone, por si te interesa.

jQuery - Sizzle
Mootools - Slick

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 28/03/2011, 19:32
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: Imitar selectores de jquery

Ansio el momento en que hagas .nextUntil() y .bind() y nos compartas el codigo.
  #5 (permalink)  
Antiguo 29/03/2011, 18:21
Avatar de AlejandroMtzRmz  
Fecha de Ingreso: febrero-2011
Mensajes: 81
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Imitar selectores de jquery

zerokilled, crees que esto se haga usando expresiones regulares? o existe alguna otra manera de analizar y separar el contenido de un string?
  #6 (permalink)  
Antiguo 29/03/2011, 18:24
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Imitar selectores de jquery

es mas facil con expresiones regulares porque de otro modo el codigo podria ser extenso o redundante.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 29/03/2011, 18:31
Avatar de AlejandroMtzRmz  
Fecha de Ingreso: febrero-2011
Mensajes: 81
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Imitar selectores de jquery

ok, pero no se de que manrea separar el contenido de un string, por ejemplo si mi cadena de texto es "uno,dos,tres,equis" como obtengo "uno" para poder modificarlo y controlarlo a mi gusto, lo mismo con dos, tres...?
  #8 (permalink)  
Antiguo 29/03/2011, 18:41
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Imitar selectores de jquery

yo comenzaria por dividir la cadena con split, especificamente por la secuencia de coma y espacio. ¿por que por ahi? porque en la sintaxis css la coma se utiliza para agrupar selectores.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 29/03/2011, 23:32
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Imitar selectores de jquery

Igual sólo me lo parece a mí pero me parece que es un asunto interesante para crear otro reto JS, o incluso una colaboración entre todos y conseguir el CSS Selector de FDW ¿Alguien lo piensa también?
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 30/03/2011, 00:31
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Imitar selectores de jquery

Aquí una muy buena implementación: http://jamesdonaghue.com/?p=40
  #11 (permalink)  
Antiguo 30/03/2011, 14:15
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: Imitar selectores de jquery

Cita:
Ansio el momento en que hagas .nextUntil() y .bind() y nos compartas el codigo.
A lo que alguien me contesto:

Cita:
Ironía innecesaria y además, muy torpe, ya que es trivial emular esos métodos.
Falso; imitar el comportamiento de .bind me parece supremamente interesante y educativo ya que este 'administra' todos los posibles eventos javascript e incluso eventos personalizados.


Cita:
Iniciado por Panino5001 Ver Mensaje
Aquí una muy buena implementación: http://jamesdonaghue.com/?p=40
Aclaremos algo; la persona que creo el tema claramente no tenia mucha idea de como hacer para que su selector llegara a los niveles que el deseaba, y ademas conozco que un selector es algo de vasta complejidad por lo que me referí con "ironia" a su intento; por que no se trata solo de re-inventar la rueda; se trata de re-inventarla mal hecha. Capacidades tecnicas que claramente si tienen las persona que desarrollo el proyecto mencionado por "Panino5001"; como se pueden ver en su codigo: http://jamesdonaghue.com/static/peppy/peppy.js

Última edición por InKarC; 30/03/2011 a las 14:31
  #12 (permalink)  
Antiguo 30/03/2011, 15:03
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Imitar selectores de jquery

Cita:
Iniciado por InKarC Ver Mensaje
por que no se trata solo de re-inventar la rueda; se trata de re-inventarla mal hecha. Capacidades tecnicas que claramente si tienen las persona que desarrollo el proyecto mencionado por "Panino5001"; como se pueden ver en su codigo
Me prometí a mí mismo que no te iba a volver a contestar pero no puedo resistirme.
Creo sinceramente que su objetivo principal no es reinventar la rueda, sino aprender cómo funciona. Además, no veo que podría tener de malo reinventarla. Si todo el mundo programara exactamente igual, tal como está establecido en ese momento, quizás seguiríamos usando tablas para maquetar, o usando variables globales a diestro y siniestro, la rueda siempre se puede mejorar. Es más, poniendo un ejemplo más literal, si no se hubiera reinventado la rueda seguiríamos usándolas de madera o incluso de piedra, en vez de neumáticos.
Saludos.
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #13 (permalink)  
Antiguo 30/03/2011, 17:33
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: Imitar selectores de jquery

Cita:
Iniciado por _cronos2 Ver Mensaje
Me prometí a mí mismo que no te iba a volver a contestar pero no puedo resistirme.
Creo sinceramente que su objetivo principal no es reinventar la rueda, sino aprender cómo funciona. Además, no veo que podría tener de malo reinventarla. Si todo el mundo programara exactamente igual, tal como está establecido en ese momento, quizás seguiríamos usando tablas para maquetar, o usando variables globales a diestro y siniestro, la rueda siempre se puede mejorar. Es más, poniendo un ejemplo más literal, si no se hubiera reinventado la rueda seguiríamos usándolas de madera o incluso de piedra, en vez de neumáticos.
Saludos.
Creo que diferimos en la definicion de la palabra "reinventar"

Todos los que "reinventaron" la rueda tuvieron que estudiar como fueron hechos los modelos previos a estas para llegar a mejorarla en algun sentido. O sea, ellos no la reinventaron desde zero y con escasos conocimientos; ellos ya sabian como funcionaba una rueda de madera y sus pros y contras antes de inventarse un modelo mejor.

Aqui es como si alguien quisiera reinventarse la rueda y no supiera ni una gota de fisica; que es muy diferente a alguien que quiera reinventarse la rueda y tenga un doctorado en Aerodinamica Industrial.
  #14 (permalink)  
Antiguo 30/03/2011, 19:21
Avatar de AlejandroMtzRmz  
Fecha de Ingreso: febrero-2011
Mensajes: 81
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Imitar selectores de jquery

El tema no es si se reinventa la rueda o no, o si se reinventa bien, el tema es COMO IMITAR LOS SELECTORES DE JQUERY
  #15 (permalink)  
Antiguo 30/03/2011, 22:09
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Imitar selectores de jquery

Cita:
Iniciado por InKarC Ver Mensaje
A lo que alguien me contesto:
Falso; imitar el comportamiento de .bind me parece supremamente interesante y educativo ya que este 'administra' todos los posibles eventos javascript e incluso eventos personalizados.
Estás sobrestimando a bind, que hace lo mismo que los métodos nativos call y apply. No tiene que ver necesariamente con la "administración" de eventos (aunque pueda usarse con manejadores de eventos), sino con hacer que una función se comporte como método de un objeto. En este foro se trató varias veces el tema bind e incluso se propusieron prototipos para agregarlo al objeto Function. Siempre que se sepa lo que se hace, está bien usarlo e incluso permite corregir algunos patrones de fugas de memoria. No obstante eso, yo no lo agregaría a un framework propio porque no le encuentro utilidad: no me ahorra tiempo de escritura de código y no le veo ventajas reales sobre call y apply (en realidad lo veo más como un muleta para ayudar a caminar a usuarios propensos a confundir los scopes que a algo verdaderamente útil, pero es sólo mi opinión y seguramente será cuestionable).

Última edición por Panino5001; 30/03/2011 a las 22:21
  #16 (permalink)  
Antiguo 30/03/2011, 23:43
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Imitar selectores de jquery

Cita:
Iniciado por InKarC Ver Mensaje
Ansio el momento en que hagas .nextUntil() y .bind() y nos compartas el codigo.
yo no veo como bind aplica en este tema que trata de selectores. y lo mismo con nextUntil que tiene un proposito totalmente distinto. por otro lado, ¿por que estas tan ansioso? ¿no sabes hacerlo? no es un reto... pero en serio, no entiendo tu argumento.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 30/03/2011 a las 23:49
  #17 (permalink)  
Antiguo 31/03/2011, 07:01
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Imitar selectores de jquery

Cita:
Iniciado por Panino5001 Ver Mensaje
No obstante eso, yo no lo agregaría a un framework propio porque no le encuentro utilidad: no me ahorra tiempo de escritura de código y no le veo ventajas reales sobre call y apply (en realidad lo veo más como un muleta para ayudar a caminar a usuarios propensos a confundir los scopes que a algo verdaderamente útil, pero es sólo mi opinión y seguramente será cuestionable).
Pues yo no estoy de acuerdo, en un lenguaje con las características de javascript, me parece algo muy útil, incluso esta definido en la especificación ECMAScript(5th edition) y FF 4 ya lo soporta de forma nativa, pero bueno como tu bien dices, esta es tan solo mi opinión.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 31/03/2011 a las 07:16
  #18 (permalink)  
Antiguo 31/03/2011, 08:50
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Imitar selectores de jquery

Cita:
Iniciado por masterpuppet Ver Mensaje
Pues yo no estoy de acuerdo, en un lenguaje con las características de javascript, me parece algo muy útil, incluso esta definido en la especificación ECMAScript(5th edition) y FF 4 ya lo soporta de forma nativa, pero bueno como tu bien dices, esta es tan solo mi opinión.

Saludos.
Sí, lo vi en la especificación. No obstante eso , seguiré pensando lo mismo hasta ver una ventaja real, más allá del chaining.
  #19 (permalink)  
Antiguo 03/04/2011, 17:28
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 18 años, 5 meses
Puntos: 87
Respuesta: Imitar selectores de jquery

Cita:
$(".seleccion").bind("focus keyup keydown keypress", function(){
check()
})
y colocando esto ya se le quita el evento a todos los objetos (menos a #boton)

Cita:
$(".seleccion").not("#boton").unbind()
Esto es una superventaja ultra-real.
  #20 (permalink)  
Antiguo 26/04/2011, 17:50
Avatar de AlejandroMtzRmz  
Fecha de Ingreso: febrero-2011
Mensajes: 81
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Imitar selectores de jquery

Ahora si, quien dijo que no se podia?

Código Javascript:
Ver original
  1. var $ = function(selector, el) {
  2.      if (!el) {el = document;}
  3.      return el.querySelector(selector);
  4. }
  5.  
  6. var $ = function(selector, el) {
  7.      if (!el) {el = document;}
  8.      return el.querySelectorAll(selector);
  9. }
  #21 (permalink)  
Antiguo 26/04/2011, 23:10
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Imitar selectores de jquery

Ojo, que si la vida fuera tan fácil no habría gente creando motores de selectores o mejorando los existentes: http://www.dustindiaz.com/qwery
El problema es que el soporte de querySelector y querySelectorAll no está tan extendido como sería deseable
  #22 (permalink)  
Antiguo 27/04/2011, 07:29
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Imitar selectores de jquery

Cita:
Iniciado por Panino5001 Ver Mensaje
El problema es que el soporte de querySelector y querySelectorAll no está tan extendido como sería deseable
Creo que en IE es a partir del 8 , no sé en otros.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #23 (permalink)  
Antiguo 27/04/2011, 09:31
Avatar de AlejandroMtzRmz  
Fecha de Ingreso: febrero-2011
Mensajes: 81
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Imitar selectores de jquery

Ups en la segunda variable del codigo era doble el simbolo $...

Cita:
Ojo, que si la vida fuera tan fácil no habría gente creando motores de selectores o mejorando los existentes...
Estoy de acuerdo, pero es algo, no es lo mismo que jquery pero almenos me funciona como lo necesito

Etiquetas: javascript, selectores
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 14:26.