2009-10-21 2 views
6

В принципе, это то, что я делаю. Пользователь посещает сайт, загружает «index.html» Внутри index.html он автоматически загружает через AJAX «details.html» в DIV. Я положил кнопку ADDTHIS на "details.html". Однако по какой-то причине переключение не работает.Кнопка AddThis не будет работать внутри AJAX, но будет нормально работать

Когда я нахожусь в details.html в браузере, работает roll-over. Я предполагаю, что это из-за 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> 

ответ

2

, если я правильно понимаю ваш вопрос, в функции обратного вызова функции Ajax, привязать к опрокидыванию к-этой кнопке Добавить ,

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

вы также можете попробовать

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

я никогда не использовал жить, но мне кажется, как она будет работать для вас, так как ваша кнопка add_this нам получить созданные после $ (документ) .ready()

0

Похоже, сценарий звонит событие OnLoad из яваскрипт и используя этот АЯКС вызов не будет на самом деле вызывает данное событие. Вы можете попробовать другой «поделиться этим» виджетами?

Как http://sharethis.com/#STS=g12m3ugh.21zb или предварительно загрузите эту кнопку?

Можете ли вы опубликовать немного больше истории о том, что вы делаете?

0

Является ли details.html полностью совместимой страницей на своем собственном? HTML, BODY, HEAD теги и т. Д.?

Если это так, я думаю, что при попытке загрузить его на другую страницу все может стать добрым. Я бы либо сменил details.html, чтобы просто включить разметку barebones, которая вам нужна, или - если вам нужно, чтобы она была индивидуально доступна, вы можете использовать jQuery для выделения необходимых битов после вызова ajax и только вставлять эту часть.

details.html

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

Index.html

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

Добавьте этот фрагмент .js в .html, который вы загружаете. Замените «#atbutton» на селектор кнопок.

addthis.button ("# atbutton");
13

Недавно я столкнулся с проблемами с использованием AddThis на всех сайтах AJAX и смог придумать пару решений для этой проблемы.

Получается, что переменная, которую вы можете передать при загрузке скрипта AJAX, а также способ повторной инициализации скрипта, если DOM перезагружается через AJAX. Я отправил полное решение подробно на моем блоге здесь:

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

Чтобы кратко резюмировать, раствор загружается AddThis с переменной domready = 1 добавленным, и повторно инициализировать сценарий, удалив начальный нагрузки, а затем загрузить скрипт динамически:

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

Просто прошу, чтобы это решение не работало. Я должен был выполнить обратный вызов в '.getScript()', который запускал 'addthis.init()' для кнопки для отображения. – Nucleon

+0

Это было в основном для меня. Однако необходимо было очистить некоторые дополнительные переменные, как описано здесь: http://stackoverflow.com/questions/9650226/addthis-not-working-with-ajax?rq=1 – joaerl

Смежные вопросы