Foros del Web » Programando para Internet » Jquery »

Cambiar valor onclick con jquery

Estas en el tema de Cambiar valor onclick con jquery en el foro de Jquery en Foros del Web. Hola me gustaria cambiar el valor de la propiedad 'onclick' de un elemento con jquery, lo intento con: $('#id').attr({onclick: 'funciontal();'}); Pero no funciona ¿Como puedo ...

  #1 (permalink)  
Antiguo 22/11/2009, 13:15
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Cambiar valor onclick con jquery

Hola me gustaria cambiar el valor de la propiedad 'onclick' de un elemento con jquery, lo intento con:

$('#id').attr({onclick: 'funciontal();'});

Pero no funciona

¿Como puedo hacerlo?

Gracias!
__________________
http://www.pkmrpg.es
  #2 (permalink)  
Antiguo 22/11/2009, 15:34
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Jquery tiene manejo de eventos, y no son tratados como atributos. Usa esto:

Cita:
$('#id').click(funcion(){

});
Fijate que onclick pasa a ser simplemente click (todo va sin "on").

Ademas, se abre una funcion anonima para manejar el evento.
  #3 (permalink)  
Antiguo 22/11/2009, 15:43
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Hola mayid, veras, lo que quiero es cambiar la funcion javascript que se realizara al pulsar sobre un boton...
Como tu dices no se como hacerlo, osea seria algo asi:

Código:
$('#id').click(funcion(){
laotrafuncion('tal', 'tal');
});
?

Gracias y responde!
__________________
http://www.pkmrpg.es
  #4 (permalink)  
Antiguo 22/11/2009, 19:11
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

No. Esto seria asi:

Cita:
$('#id').click(funcion('tal', 'tal'){

});
La funcion que se ejecutara sera anonima. No necesita nombre porque la manera de llamarla es en click.

Pero la verdad no se bien como ayudarte porque esto sumaria otro evento al click, no reemplazando el anterior evento. La solucion esta en uno de los posts de hace un par de semanas atras, segun recuerdo. Ahora lo busco.
  #5 (permalink)  
Antiguo 22/11/2009, 19:16
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

A ver si esto te sirve:

Cita:
$('#id').unbind('click');
$("#id").click(function ('tal', 'tal') {

};
unbind es para quitar el evento anterior. El resto es asignar una nueva funcionalidad al click, pasando dos parametros a la funcion por si los necesitas.

(editado): me acabo de dar cuenta de que pasar valores a la funcion asi no es posible. Pero si realmente necesitaras pasar un valor que no puedas recuperar directamente desde adento, le buscamos la vuelta.

Cita:
$('#id').unbind('click');
$("#id").click(function () {
// $("#tal").val() // lo que necesites hacer
};

Última edición por mayid; 23/11/2009 a las 06:39
  #6 (permalink)  
Antiguo 23/11/2009, 12:33
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Hola mayid, muchas gracias por responder.
Tiene que haber alguna manera de cambiar el valor de onclick de un elemento... tan simple como eso...

De la manera que dices lo intento asi:
Código HTML:
$('#elemento').click(function(){ $('#bloque_carga').show(); $('.carga').attr({disabled: 'disabled'}); xajax_AccionMoverPosicion('adelante', '{$pokemon[id]}');});
Osea cuando haces click pasa lo siguiente: muestro un elemento, pongo en disabled una clase y realizo una funcion xajax. Pero el evento onclick del evento no cambia...

¿Algo que se pueda hacer? y si se puede evitar tener que poner el codigo que hace mi funcion hay en vez de cambiar simplemente el valor de onclick mejor..

Muchas gracias!
__________________
http://www.pkmrpg.es
  #7 (permalink)  
Antiguo 23/11/2009, 15:26
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Fijate que ya encontarmos la respuesta. La postee, pero se te paso desapercibida:

Cita:
$('#id').unbind('click');
Eso quita el evento anterior. Con lo cual podes anexar luego un evento nuevo en click:

Cita:
$('#elemento').unbind('click');
$('#elemento').click(function(){
$('#bloque_carga').show();
$('.carga').attr({disabled: 'disabled'});
xajax_AccionMoverPosicion('adelante', '{$pokemon[id]}');
});
Ahora, a esto no lo entendi:

Cita:
y si se puede evitar tener que poner el codigo que hace mi funcion hay en vez de cambiar simplemente el valor de onclick mejor..
  #8 (permalink)  
Antiguo 23/11/2009, 16:07
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Pregunta Respuesta: Cambiar valor onclick con jquery

Gracias mayid,

A lo que me refiero esque yo intento cambiar:

onclick="funcion('tal', 'tal');

y me gustaria cambiarlo por

onclick= "funcion('tal','taldependevariablephp');

Y ojala fuera tan facil como un .attrib(onclick= 'valor') pero bueno si tiene que ser asi pues asi sera xD

gracias!
__________________
http://www.pkmrpg.es
  #9 (permalink)  
Antiguo 23/11/2009, 19:57
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Pero creo que tenes un error de concepto entonces. Lo que hay ahi no son constantes, sino variables. No tenes por que cambiarlas.

Cita:
funcion(tal, tal_){}
Tal y tal_ se usan solo dentro de la funcion, y representan valores pero en si ellas son variables, no valores. Lo que tenes que hacer sencillamente es llamar a la funcion pasandoles valores diferentes y listo:
Cita:
function prueba(tal, cual){
alert (tal);
alert(cual?;
return false;
}

<a href=#" onclick="prueba('esto','que esta bueno')"> toca </a>
<a href=#" onclick="prueba('aqui tambien','hay contenidos')"> toca , dale </a>
}
  #10 (permalink)  
Antiguo 25/11/2009, 02:37
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Hola mayid creo que no me has entendido xD,

eso ya lo se, a lo que me refiero esque tendria que haber alguna forma de cambiar la propiedad "onclick" mas facilmente y no tener que hacer eso no se si me enteindes..

Bueno voy a ver si lo consigo.

gracias!
__________________
http://www.pkmrpg.es
  #11 (permalink)  
Antiguo 25/11/2009, 02:50
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Hola mayid creo que no me has entendido xD,

eso ya lo se, a lo que me refiero esque tendria que haber alguna forma de cambiar la propiedad "onclick" mas facilmente y no tener que hacer eso no se si me enteindes..

Bueno voy a ver si lo consigo.

EDIT

Nada sige sin funcionar. utilizo este codigo:
Código HTML:
$('#adelante1').unbind('click'); $('#adelante1').click(function() { $('#bloque_carga').show(); $('.carga').attr({disabled: 'disabled'}); xajax_AccionMoverPosicion('adelante', 'Charmander');});
Y el evento onclick del evento en cuestion no cambia..

¿Alguna solucion? Gracias!

gracias!
__________________
http://www.pkmrpg.es
  #12 (permalink)  
Antiguo 25/11/2009, 08:43
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Estoy leyendo bind / unbind. Fijate si te sirve:

http://docs.jquery.com/Events/unbind

Y si, es cierto, no entiendo que es eso que queres como via facil. Pero quizas lo que intentes es declarar la funcion por fuera del click, e invocarla con el click.... cosa que en el link que te paso se muestra con ejemplo.

Lo que saco en limpio: es que para hacer el unbind hay que escribir tambien el nombre de la funcion que se esta desligando:

$("#adelante1").unbind('click', funcionvieja)

Esto si es que tu primera accion tenia un nombre declarado para la funcion.
  #13 (permalink)  
Antiguo 25/11/2009, 13:36
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Hola, sige sin funcionarme..

En fin estoy intentando hacer esto de otra forma sin tener que modificar el onclick..

Gracias de todas formas ojala se pudiera cambiar tan facil como cambiar un value.

Pero gracias por todo!
__________________
http://www.pkmrpg.es
  #14 (permalink)  
Antiguo 25/11/2009, 13:45
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Bueno, volviendo a tu mensaje original:

Cita:
$('#id').attr({onclick: 'funciontal();'});
El equivalente "sencillo" seria:

Cita:
$("#adelante1").unbind('click', funcionvieja).bind('click',funcionnueva);
Sin parentesis. Eso se deduce del ultimo link que te pase.
  #15 (permalink)  
Antiguo 26/11/2009, 06:52
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Hola mayid,

Haga como lo haga el valor del onclick de mi elemento NO CAMBIA NO FUNCIONA...

y hago exactamente como tu dices..
__________________
http://www.pkmrpg.es
  #16 (permalink)  
Antiguo 26/11/2009, 10:40
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

A ver si asi queda mas claro:

Cuando pulsas en el elemento este llama a una funcion javascript que a su vez varia el propio onclick del elemento para que se ejecute una funcion diferente, que yo quiero indicar pero no puedo hacerlo porque no es valido el $('#elemento').attr({onclick: 'otrafuncionquequieroesepcificar'});

¿Como lo hago entonces?

gracias!
__________________
http://www.pkmrpg.es
  #17 (permalink)  
Antiguo 26/11/2009, 10:53
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Si, creo que entiendo. Al hacer click, se ejecuta una funcion. Pero solo la primera vez.

Ya la segunda vez y de ahi en adelante tiene que ejecutarse otra funcion. Cierto?

Solo una duda: el elemento es un enlace o una etiqueta cualquiera (div, span, lo que fuere).
  #18 (permalink)  
Antiguo 26/11/2009, 11:55
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Si asi es, osea cada vez que haces click (ES UNA IMAGEN) cambio no la funcion que hay en el evento sino un argumento de esta (En vez de MoverPosicion('derecha', 'id4'), cambiarlo a MoverPosicion('derecha', 'id5').

A ver si asi ;)

Saludos y gracias!
__________________
http://www.pkmrpg.es
  #19 (permalink)  
Antiguo 26/11/2009, 12:11
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Y. lo logico seria usar un variable en vez de una constante.

valor = 'ide4';

<img src="#" onclick="MoverPosicion('derecha', valor); cuatro = 'ide5' " />
  #20 (permalink)  
Antiguo 28/11/2009, 08:30
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

.mira mas abajo
__________________
http://www.pkmrpg.es

Última edición por astut; 28/11/2009 a las 08:44
  #21 (permalink)  
Antiguo 28/11/2009, 08:44
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Esque yo no quiero quitar una funcion vieja y poner una nueva, sino cambiar el valor de un argumento de esta,
en vez de:

MoverPos('adelante', pos3)

que sea

MoverPos('adelante', pos4)

Ya que al mover la pos3 hacia adelante, ya no sera pos3, sino pos4 y quiero cambiar solo ese argumento

¿Ahora mejor?

Gracias!
__________________
http://www.pkmrpg.es
  #22 (permalink)  
Antiguo 28/11/2009, 10:16
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Te estas confundiendo. Escribir pos3 sin comillas hace referencia a una variable, y no a una constante. Es decir: pos3 puede valer lo que quieras, dinamicamente.

Vos conoces la sintaxis de javascript?

Podes tener esto declarado al iniciar la pagina.
var pos = "tres";

Y luego, tras el click, cambiarle el valor.
pos = "cuatro";

Si no tenes en claro como es esto de las variables decilo porque es importante.
  #23 (permalink)  
Antiguo 28/11/2009, 15:29
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Hola mayid.. se perfectamente como funciona lo de las variables, la cosa esque en mi problema no puede tratarse de una variable! es un valor y ya esta y necesito modificar ese argumento.

Quiero hacerlo asi no de otra forma
__________________
http://www.pkmrpg.es
  #24 (permalink)  
Antiguo 28/11/2009, 16:32
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Bueno, no se como es tu caso en concreto. Pero aca hay algo raro:

Cita:
onclick="funcion('tal', 'tal');

y me gustaria cambiarlo por

onclick= "funcion('tal','taldependevariablephp');
Cuando declaras las funciones, asignas dos entradas de variable.

function funcion (val1, val2)
...
}

Asi como vos originalmente lo pensaste, eso que esta entre parentesis es un valor fijo que le estas pasando a la funcion "funcion" (por llamarla como vos la llamaste en tu ejemplo).

Que por mas que sea un valor fijo, dentro de la funcion ya es reconocida como val1 o val2, es decir como variable.

En fin, teniendo declarado esto originalmente:
var var2 = "valor2";
Cita:
onclick = MoverPos('adelante', var2)
Creo que lo unico que resta hacer ahora es cambiar el valro de la var2, y no de la funcion onclick.
  #25 (permalink)  
Antiguo 29/11/2009, 07:07
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Hola mayid, reitero:

Cita:
Esque yo no quiero quitar una funcion vieja y poner una nueva, sino cambiar el valor de un argumento de esta,
en vez de:

MoverPos('adelante', pos3)

que sea

MoverPos('adelante', pos4)

Ya que al mover la pos3 hacia adelante, ya no sera pos3, sino pos4 y quiero cambiar solo ese argumento

¿Ahora mejor?

Gracias!
Eso es lo que quiero conseguir nada mas.
__________________
http://www.pkmrpg.es
  #26 (permalink)  
Antiguo 30/11/2009, 02:05
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

¿Nadie de nadie?
gracias!
__________________
http://www.pkmrpg.es
  #27 (permalink)  
Antiguo 01/12/2009, 11:40
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Para mi se soluciona con variables, pero creo que no viste bien el ejemplo:

Cita:
valor = 'ide4';

<img src="#" onclick="MoverPosicion('derecha', valor); valor = 'ide5' " />
Tras el primer click, seteamos "valor" con un nuevo valor... Entonces al segundo click ya lo que vamos a pasar es "ide5" en vez de "ide4".
  #28 (permalink)  
Antiguo 02/12/2009, 07:31
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Cambiar valor onclick con jquery

depende para que lo quieres, ¿porqué no pones el html y explicas a qué quieres llegar?

para que cambie pos1, pos2, pos3 y asi sucesivamente declaras una variable global e incrementas de a 1 en cada clic, como un contador y concatenas la cadena 'pos' con la variable

Código HTML:
<html>
    <head>
        <title>prueba</title>
        <script type="text/javascript" src="jquery.js"></script>
        <script type="text/javascript">
            var indice = 1;
            $().ready( function (){
                $('a').click( function (){
                    $('#text').html('pos'+indice);
                    indice++;
                });
            });
        </script>
    </head>
    <body>
        <a href="#">Click</a><br />
        <a href="#">Click</a><br />
        <a href="#">Click</a><br />
        <a href="#">Click</a><br />
        <div id="text"></div>
    </body>
</html> 
por ahi no sirve para lo que tu quieres, pasa que no se sabe que utilidad le vas a dar, quizá hay algo más óptimo
  #29 (permalink)  
Antiguo 08/12/2009, 09:39
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Cambiar valor onclick con jquery

Es simple el porque no puedo:

tengo estas 6 variables:
pos1= 1
pos2= 2
pos3= 3
pos4= 4
pos5= 5
pos6= 6

Ahora desde xajax quiero cambiar la posicion del pos6 y hago:
pos6= 4.

Vale, ahora si quiero volver a cambiar la pos6, ¿Como se que variable es 6?
Y no me vale un
if (pos1= 6)
if (pos2= 6)
etc...

Tiene que ser desde dentro desde el propio onlcick sino no me sirve..
Esto lo hago para mover los pokemon de posicion en la seccion "Equipo" del juego web que estoy desarrollando

Ahora?
__________________
http://www.pkmrpg.es
  #30 (permalink)  
Antiguo 08/12/2009, 09:57
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: Cambiar valor onclick con jquery

Es decir que tenes 6 images, y que les tenes asignada una posicion dinamica.

Para evitar que no coincida el numero en la variable con el valor asignado, yo pondria en vez de esto:

pos1= 1
pos2= 2
pos3= 3
pos4= 4
pos5= 5
pos6= 6

... un id a cada foto (viendo la pagina nos seria mejor imaginarlo, pero parece que no esta online).

Teniendo los objetos identificados por id habria que reconstruir la logica de tu funcion, pero me parece que lo tenes que hacer porque estas trabado.

De cualquier manera, yo quisiera ver esa dichosa funcion. Mismo los tags html como para tener a que atenerse.

Dicho sea de paso, las capturas de pantalla de tu juego estan buenisimas. Muy bueno que puedas hacer ese juego.
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 19:31.