funcion on() de jquery no me funciona

Iniciado por NataliaV, 12 Junio 2012, 12:16 PM

0 Miembros y 1 Visitante están viendo este tema.

NataliaV

hola.. buenas.. tengo un problema con la función on() de jquery..
quiero cargar paginas en un div determinado, y que estas páginas funcionen correctamente. Con esta función va genial.. pero por .... ... (mejor no decirlo)... se modifico el código y ahora no logro hacerlo funcionar..
el codigo es:
$(document).ready(function()
     {
   
   $("#nav li").each(function(event){
    var href = $(this).attr("href");
   $(this).attr({href:" # "});
   $(this).on('click','ul a',function(event){
   event.preventDefault();
   $("#centro").load(href);
   return false;
   });
   });
                        
   });

el menú esta en un div lateral.. y se carga en otro.. los nombres estan bien..

me podeis echar una mano? Gracias

#!drvy

#1
Coges la variable href en el lugar equivocado. Tienes que pillarla cuando el usuario hace click sobre el enlace porque si no, le estas diciendo a jquery que coga el atributo href de un li... xD

Código (javascript,5,6) [Seleccionar]
$(document).ready(function(){
 $("#nav li").each(function(event){
   $(this).on('click','ul a',function(event){
     event.preventDefault();
     var href = $(this).attr("href");
     $(this).attr({href:" # "});
     $("#centro").load(href);
     return false;
   });
 });
});


Saludos

NataliaV

hola.. muchas gracias por responderme..
me cargan las páginas en donde queria, pero ahora me pasa una cosa que antes no me pasaba.. y es, que en alguna una página, el efecto mostrar/ocultar me va, y en otra, el mismo efecto no lo hace.. y es que ahora, si doy dos veces al mismo link (no seguidas).. pues ya no me va..y me da error:
Uncaught Error: Syntax error, unrecognized expression: #
m.error
m.filter
m
c.querySelectorAll.m
f.fn.extend.find
f.fn.extend.load.f.ajax.complete
f.Callbacks.o
f.Callbacks.p.fireWith
w
f.support.ajax.f.ajaxTransport.send.d

...a mi esto me esta volviendo chibirita ya..  :P

pd.de nuevo gracias por contestar..

#!drvy

Es normal, porque cambias el valor del attr a # cosa que no es valida y al segundo intento falla.
Para solucionarlo puedes quitar el $(this).attr({href:" # "}); Ya que el prevent default ya hace todo lo necesario.


Saludos

NataliaV

que besazo te pegaba ahora madre...  ;D

ahora voy a buscar porque me funciona en una pagina el slideDown en una página y en la otra no...

Gracias gracias gracias.. jeje

besos

NataliaV

voy a explicarme mejor...

cargo las páginas en un div.. dos de ellas tienen capas ocultas que se van abriendo y cerrando dependiendo de lo que el usuario quiera ver..

bueno.. pues pulso el link del menú.. se carga la página en el div.. y pulso (en la página recien cargada) otro link que me muestra una lista de cocteles  :silbar: .. doy a otro link del menú, y en la página que se carga hay varios enlaces que muestran distintas capas según la opción que tu quieras.. pués en esta página no funciona el mostrar capa..  :o .. los códigos son identicos (exceptuando el nombre de la capa claro, pero igualitos, y están en el mismo archivo misfunciones.js..

alguien sabe porque puede pasar esto?
la ruta está bien (las páginas en el mismo directorio)...
no veo ningún error de escritura...
...
...

NataliaV

ya está.. arreglado...

he separado las funciones, las he pasado a otro archivo y ya funciona.. eso si.. lo he tenido que sacar del directorio del html.. (no se por que.. pero asi funciona..

Gracias a todos!
besosss

NataliaV

jooooooooroba..jejejej

pues no está solucionado del todo... en el explorer no me va... ... ... :huh:...
lo dejo por hoy..

si alguno teneis idea de porque puede ser.. no os corteis ... podeis dar vuestra opinión..

:-* :-*

#!drvy

Podrías dar un ejemplo de lo que pasa? Es que no puedo adivinar el código que tienes para la animación y todo eso =)

PD: Ejemplo: parte del código o subirlo algún sitio para verlo.. xD

Saludos

NataliaV

hola!
Pues está arreglado y no he hecho nada.. supongo que simplemente tenia el pc, el xamp, el ie.. cansaditos ya... acabo de mirarlo y ya funciona  ;-)

por cierto.. el código era simplemente:

en fun.js
$(document).ready(function()
     {

 
$("#mindividual").click(function(event)
  {
   $("#opind").slideDown(2000);
   });
});

en el html:
<head>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../fun.js"></script>
</head>
<body>
...
<div class="opcion1"><a href="#" id="mindividual">- MOMENTO INDIVIDUAL </a></div>
...
</body>

...ya ves tú que complicación jeje..

Muchas gracias por tu ayuda..
besos...
pd. Cuando la publique te mandaré una invitación para que la veas...  :-*