2011-04-16 19 views
11

que tiene una lista de enlaces que se abren en un iframe, como:jQuery "post-clic" evento

que necesito para actualizar otro div después se hace clic en el enlace. Específicamente, necesito llamar a una función que verifique el atributo src del marco y actualice el div. Si hago un:

$("#frameTrigger a").click(function() { 
    var iframe = $("iframe[name=iframe1]").get(0); 
    console.log(iframe.contentWindow.location.href); 
    // the problem here is that that the iframe.window.location will 
    // change AFTER this function returns 
}); 

No obtengo lo que se espera.

+2

Si los enlaces se mueven a un nombre de dominio diferente al suyo, no podrá extraer el SRC. – Khez

+2

'$ (" # frameTrigger ")' te falta # ... solo en el caso – Rafay

+0

@Khez: tienes razón, ahora veo el problema y, por lo tanto, tengo que revisar la pregunta. –

Respuesta

9

Supongo que obtienes el valor anterior en lugar del nuevo valor. Es posible que desee envolver su función en un setTimeout de 1 ms para permitir que se realice la actualización.

+0

En este caso particular, se necesitó un tiempo de espera más largo (500 ms). –

2
$("#frameTrigger a").click(function(){ 
    console.log($(this).attr("href")); 
}); 

que necesita El primer selector para trabajar en los clics de los enlaces. Además, creo que tenía la sintaxis para console.log incorrecta (aunque nunca la he usado). Lo cambié así que cuando haces clic en un enlace, registra el atributo href del enlace. Espero que esto ayude.

0

Si tiene problemas con toda la funcionalidad de clics que completa al hacer clic en jQuery .click() - Sé que no es ideal, pero - tal vez debería simplemente tener jQuery completar explícitamente la secuencia que se debe ejecutar cuando clickeado Algo como:

$("#someElement").bind('click', function(event) { 
    event.preventDefault(); 
    $($("#frameTrigger a:eq(1)").attr('target')).attr('src', $("#frameTrigger a:eq(1)").attr('href')); 
});