2009-10-21 19 views
6

Básicamente, esto es lo que estoy haciendo. Sitio de visitas del usuario, carga "index.html" Dentro de index.html, carga automáticamente, a través de AJAX, "details.html" en un DIV. Puse un botón ADDTHIS en "details.html". Sin embargo, por alguna razón, la transferencia no funciona.AddThis botón no funcionará dentro de AJAX, pero funcionará normalmente

Cuando visito details.html en el navegador, la transferencia funciona. Supongo que es por el AJAX?

<a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;pub=xa-4adf7e45288f5b21"> 
<img src="http://s7.addthis.com/static/btn/sm-share-en.gif" width="83" height="16" alt="Bookmark and Share" style="border:0;margin-top:16px;"/></a> 
<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pub=xa-4adf7e45288f5b21"></script> 

Respuesta

2

Si entiendo bien su pregunta, en la devolución de llamada de la función ajax, enlazar el vuelco al complemento este botón .

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: "name=John&location=Boston", 
    success: function(){ 
    $('.addthis_button').hover(
     function(){ 
     //do mouse over 
     },function(){ 
     //do mouse out 
    }); 
    } 
}); 

también puede probar

$('.addthis_button').live('mouseover',function(){//do mouseover}); 
$('.addthis_button').live('mouseout',function(){//do mouseout}); 

nunca he utilizado en vivo, pero parece que podría funcionar para usted ya su add_this del botón se crean después de que el ready $ (document)()

0

Parece que el guión está llamando el evento onLoad de Javascript y el uso de esta llamada Ajax en realidad no desencadenar ese evento. Podrías probar otro widget "compartir esto"?

Me gusta http://sharethis.com/#STS=g12m3ugh.21zb o ¿Precargar ese botón?

¿Puedes publicar un poco más de la historia sobre lo que estás haciendo?

0

¿Es details.html una página completamente compatible por sí mismo? HTML, BODY, HEAD etiquetas, etc.

Si es así, creo que las cosas pueden ponerse feas cuando intenta cargarlo en otra página. Cambiaría details.html para incluir el marcado de barebones que necesita, o si necesita que siga siendo accesible de forma individual, podría usar jQuery para quitar los bits necesarios después de la llamada ajax e inyectar solo esa parte.

details.html

<html> 
<head> 
</head> 
<body> 
    <div id="details"> 
    The needy bits....... 
    </div> 
</body> 
</html> 

Index.HTML

$("#targetDivID").load("detail.html #details"); 
0

Agregue este fragmento de .js al .html que está cargando. Reemplace "#atbutton" con el selector de su botón.

addthis.button ("# atbutton");
13

Recientemente me encontré con problemas relacionados con el uso de AddThis en un sitio con todo AJAX y pude encontrar un par de soluciones para este problema.

Resulta que hay una variable que puede pasar al cargar el script AJAX, así como una manera de reiniciar el script si el DOM se vuelve a cargar a través de AJAX. He publicado la solución completa en detalle en mi blog aquí:

http://joecurlee.com/2010/01/21/how-to-use-addthis-with-ajax-and-overflowauto/

Para resumir brevemente, la solución está cargando AddThis con el domready variable = 1 adjunta, y re-inicializar la secuencia de comandos mediante la supresión de la inicial carga y luego volver a cargar el script de forma dinámica:

var script = 'http://s7.addthis.com/js/250/addthis_widget.js#domready=1'; 
if (window.addthis){ 
    window.addthis = null; 
} 
$.getScript(script); 
+1

Solo sonando en eso para mí, esta solución no funcionó. Tuve que hacer una devolución de llamada en '.getScript()' que ejecutaba 'addthis.init()' para que apareciera el botón. – Nucleon

+0

Esto fue básicamente para mí. Sin embargo, la eliminación de algunas variables adicionales era necesaria, como se describe aquí: http://stackoverflow.com/questions/9650226/addthis-not-working-with-ajax?rq=1 – joaerl

5

addthis.toolbox (". Addthis_toolbox");

Cuestiones relacionadas