jQuery () .hide время от времени работает над обменом ссылками, добавленными через JavaScript - PullRequest
0 голосов
/ 06 сентября 2011

Я использую ShareThis / AddThis и хочу скрыть подсчет доли на моей странице, когда они равны нулю.

Проблема, с которой я столкнулся, заключается в том, что .hide () не работает надежно - он работает тольконекоторое время, когда ссылки появляются на странице один раз.На странице с несколькими экземплярами ссылок общего доступа он работает только для первого набора.

Я предполагаю, что он не работает из-за длительного времени, необходимого для появления ссылок.Тело страницы показывает только этот код, который я использую:

<script type="text/javascript">
jQuery(function($) {

$('.stBubble').each(function(){         
    if($(this).text() == '0' || $(this).text() == 'New') {
        $(this).hide();
    }
});
});

Он появляется в моем нижнем колонтитуле;код ShareThis в шаблоне страницы выглядит следующим образом:

<li><span class='st_twitter_vcount' displayText='Tweet'"></span></li>
<li><span class='st_facebook_vcount' displayText='Facebook'"></span></li>
<li><span class='st_email_vcount' displayText='Email'"></span></li>
<li><span class='st_sharethis_vcount' displayText='Share'"></span></li>

Что мне нужно сделать, чтобы это заработало?

Ответы [ 2 ]

1 голос
/ 06 сентября 2011

Предпочтительным способом решения этой проблемы синхронизации загрузки является поиск программного способа получения уведомлений, когда addThis завершает вставку себя на страницу.Поскольку это сторонний JS, вам придется либо найти поддерживаемый API addThis для этого уведомления, либо взломать их библиотеку (например, заменить одну из их функций на одну из ваших собственных функций, которая вызывает оригинал, а затем уведомляет вас).

Если вы не можете найти способ сделать предпочтительный способ, то единственный другой способ, который я знаю, это опросить вашу страницу, пока вы не найдете на этой странице материал addThis.Вы, вероятно, использовали бы довольно короткий интервальный таймер, который ищет некоторую часть HTML-кода addThis, который, как вы знаете, всегда будет присутствовать, когда он завершит добавление своего материала.Когда это найдено, вы можете отменить интервальный таймер и вызвать вашу функцию, чтобы скрыть то, что вы хотите скрыть.Поскольку интервальный таймер может не сразу поймать новый контент, вы можете получить флэш-контент перед запуском JS, чтобы скрыть то, что вы не хотите видеть.Это можно обойти, добавив статическое правило CSS, которое по умолчанию скрывает все счетчики addThis, и когда ваш JS запускается, он может переопределить это, чтобы сделать нужные из них видимыми.Содержимое, которое вы хотите скрыть, никогда не будет мигать или быть видимым, если вы сделаете это таким образом.

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

0 голосов
/ 06 сентября 2011

Я бы посмотрел на apti addthis и посмотрел, сможешь ли ты найти функцию обратного вызова для происходящего события. Если это так, назовите свою функцию и затем вызывайте эту функцию каждый раз, когда происходит событие обратного вызова. Если проблема с задержкой, это должно решить.

...