Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Pasar funcion de javascript a jquery

Estas en el tema de Pasar funcion de javascript a jquery en el foro de Jquery en Foros del Web. Buenas, tengo el siguiente código con una llamada a una función de javascript : @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original < a id = ...
  #1 (permalink)  
Antiguo 10/12/2014, 12:15
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 11 meses
Puntos: 4
Pasar funcion de javascript a jquery

Buenas, tengo el siguiente código con una llamada a una función de javascript:
Código Javascript:
Ver original
  1. <a id="enlace" href="javascript:funcion('precio')">precio</a> |
  2. <a id="enlace" href="javascript:funcion('ciudad')">ciudad</a> |
  3. <a id="enlace" href="javascript:funcion('metros')">metros</a> |

Pero estoy substituyendo todas las funciones que tengo en javascript por jquery y no sé si hay manera de obtener el valor que le pasaba a la función, es decir, en jquery escribo esta función:
Código Javascript:
Ver original
  1. $("#enlace").click(function() {
  2. })
Pero no sé como obtener el parámetro que le pasaba a la función, he intentado lo siguiente, pero no funciona:
Código HTML:
Ver original
  1. <a id="enlace" href="precio">precio</a>
y
Código Javascript:
Ver original
  1. $("#enlace").val()
Pero devuelve nada.

Gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #2 (permalink)  
Antiguo 10/12/2014, 12:58
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Pasar funcion de javascript a jquery

Hola:

Primero deberías saber que los atributos "id" no deben estar repetidos... además, javascript nativo siempre es mejor que cualquier librería, así que en vez de migrar cosas viejas, creo mejor ese planteamiento para nuevos proyectos

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 10/12/2014, 14:37
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 11 meses
Puntos: 4
Respuesta: Pasar funcion de javascript a jquery

Gracias por responder. Sé que los id's deben ser únicos. Ha sido un error al adaptar el código para postear.
Esté bien o no el migrar, creo que no es motivo de este post, me gustaría si alguien puede decirme como hacerlo
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #4 (permalink)  
Antiguo 10/12/2014, 15:03
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: Pasar funcion de javascript a jquery

Como quieras...

Lo mejor sería asociar una función para cada cosa, y no utilizar parámetros inservibles.
  #5 (permalink)  
Antiguo 10/12/2014, 15:38
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 11 meses
Puntos: 4
Respuesta: Pasar funcion de javascript a jquery

Es tal como lo tengo hecho, pero no me acaba de gustar, pues las cuatro funciones hacen exactamente lo mismo
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #6 (permalink)  
Antiguo 10/12/2014, 19:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Pasar funcion de javascript a jquery

Podrías usar un atributo personalizado.

Código HTML:
Ver original
  1. <a class = "ejemplo" data-valor = "valor 1">Enlace 1</a>
  2. <a class = "ejemplo" data-valor = "valor 2">Enlace 2</a>
  3. <a class = "ejemplo" data-valor = "valor 3">Enlace 3</a>

Código Javascript:
Ver original
  1. $(".ejemplo").on("click", function(){
  2.     alert($(this).data("valor")); //El valor almacenado en el atributo personalizado
  3. });

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 11/12/2014, 06:36
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 11 meses
Puntos: 4
Respuesta: Pasar funcion de javascript a jquery

Gracias Alexis88,
He implementado el código que has escrito y no me funciona. El click no hace nada.
He visto que has eliminado el href. He probado de ponerlo y tampoco.
No conocía esta forma de escribir el evento onclick:
Código Javascript:
Ver original
  1. $(".ejemplo").on("click", function(){
Siempre lo había escrito así. También lo he probado y no funciona:
Código Javascript:
Ver original
  1. $(".ejemplo").onclick(function() {

Tengo que hacer alguna cosa más?
Gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #8 (permalink)  
Antiguo 11/12/2014, 06:51
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 14 años, 2 meses
Puntos: 48
Respuesta: Pasar funcion de javascript a jquery

¿Has cambiado los ids "enlace" por clases?.
Se puede usar on para enlazar distintos eventos; si no lo conocías deberías consultar la documentación de jQuery o hacer algún curso, es bastante básico.
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España
  #9 (permalink)  
Antiguo 11/12/2014, 07:20
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 10 años, 5 meses
Puntos: 44
Respuesta: Pasar funcion de javascript a jquery

No puede ser que el código de Alexis no te haya funcionado... incluíste la librería jQuery en tu código?
Si la respuesta es sí, probablemente estés ejecutando el script antes de que se cargen los elementos. Prueba encerrar la función dentro de document.ready:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $(".ejemplo").click(function(){
  3.         alert($(this).data("valor")); //El valor almacenado en el atributo personalizado
  4.     });
  5. });

Saludos

Última edición por GeekGirl; 11/12/2014 a las 07:27
  #10 (permalink)  
Antiguo 11/12/2014, 07:59
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 11 meses
Puntos: 4
Respuesta: Pasar funcion de javascript a jquery

Gracias por responder.
Sí, cambié los id's por clases, tal como comentó 'caricatos'.
Que aún tengo mucho que aprender, lo tengo clarísimo, pero hago lo que puedo.

Lo he probado, creo que se carga todo, por lo si siguiente:
Código PHP:
Ver original
  1. $(".ejemplo").click(function() {
  2.             alert ("hola");
  3.         })
Aparece el mensaje "hola"

Pero si:
Código PHP:
Ver original
  1. $(".ejemplo").click(function() {
  2.             alert ($(this).data("valor"));
  3.         })
Sale "undefined"

Y el código HTML es este:
Código HTML:
Ver original
  1. <a class="ejemplo" data-valor="Precio">Precio</a>

Seguro que estoy haciendo algo mal, pero no sé verlo.
Gracias.
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #11 (permalink)  
Antiguo 11/12/2014, 08:13
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 10 años, 5 meses
Puntos: 44
Respuesta: Pasar funcion de javascript a jquery

Tenés sólo eso en tu HTML? Por ahí la clase ejemplo la estás usando en otra parte y de ahí el undefined
  #12 (permalink)  
Antiguo 11/12/2014, 08:27
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 14 años, 2 meses
Puntos: 48
Respuesta: Pasar funcion de javascript a jquery

¿Qué versión de jQuery estás usando?
¿Si en el que te da "undefined" pones esto qué te da?:
Código Javascript:
Ver original
  1. $(".ejemplo").click(function() {
  2.     alert ($(this).attr("data-valor"));
  3. });
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España
  #13 (permalink)  
Antiguo 11/12/2014, 12:19
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 11 meses
Puntos: 4
Respuesta: Pasar funcion de javascript a jquery

Fenomenal
De esta manera sí funciona, muchísimas gracias.

Estoy usando la versión 1.3.1 de jquery.

Muchas, muchas gracias
__________________
Qué fácil cuando lo sabes y qué difícil cuando no
  #14 (permalink)  
Antiguo 11/12/2014, 12:48
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: Pasar funcion de javascript a jquery

Sería bueno que empieces a utilizar una versión más actual, te estás perdiendo de muchos nuevos métodos. También pudiste haberlo hecho con código JavaScript nativo.

Código Javascript:
Ver original
  1. [].forEach.call(document.querySelectorAll(".ejemplo"), function(enlace){
  2.     enlace.addEventListener("click", function(){
  3.         alert(this.getAttribute("data-valor"));
  4.     }, false);
  5. });

Como verás, con unas cuantas líneas de código, puedes realizar lo mismo, con la ventaja de que ya no tendrías que cargar toda una librería para ello. Por ahí iba la recomendación de caricatos.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #15 (permalink)  
Antiguo 11/12/2014, 14:52
 
Fecha de Ingreso: enero-2002
Ubicación: Sabadell
Mensajes: 565
Antigüedad: 22 años, 11 meses
Puntos: 4
Respuesta: Pasar funcion de javascript a jquery

Gracias por responder.
No conocía jquery hasta que me encargaron el mantenimiento de una web existente.
Cuando empiezas la web de nuevo se puede escoger, cuando te toca un mantenimiento, te tienes que adaptar. No dudo en absoluto que tenga razón caricatos, sólo que este post no era el indicado para hablar de ello.
Actualizaré la versión de jquery.

Muchísimas gracias por vuestra ayuda.
__________________
Qué fácil cuando lo sabes y qué difícil cuando no

Etiquetas: funcion, javascript
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 12:14.