0

我使用 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>

我该怎么做才能让它工作?

4

2 回答 2

1

解决此加载时间问题的首选方法是找到一种编程方式,以便在 addThis 完成将自身插入页面时获得通知。由于它是第三方 JS,因此您必须为该通知找到受支持的 addThis API,或者您必须破解他们的库(例如,用您自己的调用原始函数然后通知您的函数替换其中的一个函数)。

如果您找不到首选方法,那么我所知道的唯一其他方法是轮询您的页面,直到您在页面中找到 addThis 内容。您可能会使用一个相当短的间隔计时器来查找 addThis HTML 的某些部分,您知道这些部分在完成添加内容后将始终存在。找到后,您可以取消间隔计时器并调用您的函数来隐藏您想要隐藏的内容。因为间隔计时器可能不会立即捕捉到新内容,所以您可能会在 JS 运行之前看到内容的闪烁以隐藏您不想看到的内容。这可以通过添加一个静态 CSS 规则来解决,该规则默认隐藏所有 addThis 计数器内容,并且当您的 JS 运行时,它可以覆盖它以使所需的可见。

我应该补充一点,轮询页面内容是最后的手段,即使内容从未出现,您也必须确保您的间隔计时器始终被取消。否则,他们可能会阻塞查看器的浏览器。

于 2011-09-06T07:06:29.767 回答
0

我会环顾一下 addthis api,看看你是否可以找到正在发生的事件的回调函数。如果是这样,请命名您的函数,然后在每次回调事件发生时调用该函数。如果是延迟问题,那应该可以解决。

于 2011-09-06T05:58:00.687 回答