2009-10-21 21 views
6

Zasadniczo to właśnie robię. Strona odwiedzin użytkownika, ładuje "index.html" W index.html automatycznie ładuje, poprzez AJAX, "details.html" do DIV. Umieszczam przycisk ADDTHIS na "details.html". Jednak z jakiegoś powodu przewrócenie nie działa.Przycisk AddThis nie działa w AJAX, ale działa normalnie.

Kiedy odwiedzam stronę details.html w przeglądarce, działa roll-over. Zgaduję, że to z powodu 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> 

Odpowiedz

2

jeśli dobrze rozumiem Twoje pytanie, w zwrotnego funkcji ajax, wiążą przewróceniu na dodatek tego przycisku .

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

można także spróbować

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

nigdy nie używałem na żywo, ale wydaje się, że będzie pracować dla Ciebie, ponieważ Twój przycisk add_this Get stworzony po $ (document) .ready()

0

Wygląda na to, że skrypt wywołuje zdarzenie onLoad w javascript i użycie tego wywołania ajaxowego nie wywoła tego zdarzenia. Możesz wypróbować inny "udostępnij ten" widżet?

Podoba Ci się http://sharethis.com/#STS=g12m3ugh.21zb lub wstępnie załadować ten przycisk?

Czy możesz dodać trochę więcej historii na temat tego, co robisz?

0

Czy details.html jest w pełni zgodną stroną na własną rękę? Znaczniki HTML, BODY, HEAD itp.?

Jeśli tak, wydaje mi się, że niektóre rzeczy mogą się przydać, gdy próbujesz załadować je na inną stronę. Chciałbym zmienić plik details.html tak, aby zawierał tylko znaczniki barebone, których potrzebujesz - lub - jeśli chcesz, aby były nadal dostępne indywidualnie - możesz użyć jQuery, aby usunąć potrzebne bity po wywołaniu ajax i tylko wstrzyknąć tę część.

Details.html

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

Index.html

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

Dodaj ten fragment .js do pliku .html, który ładujesz. Zastąp "#atbutton" za pomocą selektora przycisku.

addthis.button ("# atbutton");
13

Niedawno pojawiły się problemy z używaniem AddThis na wszystkich stronach AJAX i udało mi się wymyślić kilka rozwiązań tego problemu.

Okazuje się, że istnieje zmienna, którą można przekazać podczas ładowania skryptu AJAX, a także sposób ponownego zainicjowania skryptu, jeśli DOM jest ponownie załadowany przez AJAX. Pisałem pełne rozwiązanie w szczegółach na moim blogu tutaj:

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

Aby krótko podsumować, rozwiązaniem jest ładowanie AddThis ze zmienną domready = 1 załączonej i ponowne inicjowanie skrypt usuwając początkowy obciążenia, a następnie ponownie załadować skrypt dynamicznie:

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

Po prostu w tym celu dla mnie to rozwiązanie nie zadziałało. Musiałem wykonać wywołanie zwrotne w '.getScript()', które uruchomiło 'addthis.init()', aby przycisk pojawił się. – Nucleon

+0

To było w zasadzie dla mnie. Jednak wyczyszczenie niektórych dodatkowych zmiennych było konieczne, jak opisano tutaj: http://stackoverflow.com/questions/9650226/addthis-not-working-with-ajax?rq=1 – joaerl

5

addthis.toolbox (". Addthis_toolbox");

Powiązane problemy