2011-09-06 45 views
0

我使用ShareThis/AddThis并希望在我的页面上隐藏共享计数时,他们等于零。jQuery().hide偶尔在通过javascript添加的共享链接上工作

我遇到的问题是,.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> 

我需要做些什么才能使这个工作?

+0

在内容中,我看不到'stBubble'类,它们会匹配您的jQuery选择器。 – jfriend00

回答

1

攻击这个负载计时问题的首选方式是找到当前页完成自身插入到页面以获取通知的编程方法。由于它是第三方JS,因此您必须为该通知找到受支持的addThis API,或者您必须破解他们的库(例如,用自己的函数替换其中一个函数,调用原始函数并通知您)。

如果你不能找到一个办法做到的首选方式,那么我唯一知道的另一种方式是,直到你发现在页面的前页的东西来轮询页面。您可能会使用一个相当短的间隔计时器来查找addThis HTML的某些部分,您知道在添加它的东西时它总是存在。发现后,您可以取消间隔计时器并调用您的功能来隐藏您想要隐藏的内容。因为间隔计时器可能不会立即捕获新内容,所以在JS运行之前,您可能会获得内容的闪光以隐藏您不想看到的内容。这可以通过添加静态CSS规则来解决,默认情况下隐藏所有addThis计数器的东西,当您的JS运行时,它可以覆盖,使所需的可见。如果你这样做,你想隐藏的内容永远不会闪烁或可见。

我要补充一点,轮询内容的页面是最后的手段,你必须确保你的间隔计时器始终得到即使从来没有出现的内容取消。否则,他们可能会陷入观众的浏览器。

0

我会环顾四周在前页API,看看是否能找到正在发生的事件的回调函数。如果是这样,请为您的函数命名,然后在每次发生回调事件时调用该函数。如果其延迟问题,那应该解决它。