JQuery - Asociar funcion a evento click para nuevo elemento creado dispara multiples veces la funcion

   
Vista:

Asociar funcion a evento click para nuevo elemento creado dispara multiples veces la funcion

Publicado por Ivan (2 intervenciones) el 08/08/2014 00:52:43
Hola a todos, pues es eso basicamente. Estoy intentando crear unos elementos de paginacion (1,2,3,4,5....). Para ello creo el elemento, le añado la funcion que no es mas que una funcion que hace submit del formulario pero con el numero de pagina metido individualmente en cada elemento. El caso es que el comportamiento no es el esperado, crea los elementos y ejecuta la funcion, que como es un submit vuelve a lanzar la misma pagina y asi indefinidamente.
Llevo varios dias con esto mirando en todos los sitios y ando bastante desesperado porque no consigo saber porque simplemente no asocia la funcion en vez de lanzarla. En fin, ahora pondre el codigo y si alguien pudiera ayudarme se lo agradeceria, sobre todo si es una tonteria que no consigo ver, jejejeje.

1
2
3
4
5
6
7
if (numTotalElementos > numElementosXPagina) {
        //recogemos la caja de paginacion donde añadir los elementos de paginacion
        var cajaPaginacion = $('#cajaPaginacion');
        for (i = 0; i < numPaginas; i++) {
            cajaPaginacion.append($('<a class="elemPaginaPaginacion">'+(i+1)+'</a>').on('click',ejecutaAccion(ctx+'/bebidas/busquedaBebidasFiltros?pagina='+i,'formIndexBebidas')));
        }
    }

La variable ctx es la ruta inicial para la llamada:
1
var ctx = '${pageContext.request.contextPath}';

y la funcion ejecutaAccion es:

1
2
3
4
5
6
7
8
9
10
function ejecutaAccion(accion, formId) {
    var form = document.getElementById(formId);
    if (form != null && form != undefined) {
        form.action = accion;
        form.submit();
    }else{
        document.forms[0].action = accion;
        document.forms[0].submit();
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Asociar funcion a evento click para nuevo elemento creado dispara multiples veces la funcion

Publicado por xve (557 intervenciones) el 08/08/2014 08:45:48
Hola Ivan, la verdad es que esta manera de paginación que intentas implementar la veo muy complicada y muy mala para la indexación por parte de los robots.

Porque simplemente no pones un enlace <a href...>? algo así:
1
cajaPaginacion.append($('<a class="elemPaginaPaginacion" href="ctx+'/bebidas/busquedaBebidasFiltros?pagina='+i">'+(i+1)+'</a>'));

De esta manera, no utilizas tanto código javascript, y los robots te indexaran todas las paginas.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Asociar funcion a evento click para nuevo elemento creado dispara multiples veces la funcion

Publicado por Ivan (2 intervenciones) el 08/08/2014 09:00:37
Hola xve y gracias por tu respuesta rapida. Es probable que tengas razon en cuanto a lo de complicarme metiendo funciones javascript y demas pero al final por intentar reutilizar codigo al final acabamos complicandonos la vida.

Aun asi y aunque ya solo me sirva para aprender de los errores me gustaria saber que hago mal en lo que explique en el primer mensaje para que en vez de solo añadir la funcion al evento click lo que ocurra en realidad sea que se dispara esa funcion que quiero añadir. Creo que sintacticamente esta bien y tambien la idea (a excepcion de la complicacion que comentaba xve). Ando empezando en jQuery y me gustaria aprender de este error si fuera posible. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar