jQuery().hide偶尔会在共享通过javascript添加的链接上工作

时间:2011-09-06 05:52:23

标签: javascript jquery hide addthis sharethis

我使用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 个答案:

答案 0 :(得分:1)

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

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

我应该补充说,轮询页面内容是最后的手段,你必须确保你的间隔计时器总是被取消,即使内容永远不会出现。否则,他们可能会陷入观众的浏览器。

答案 1 :(得分:0)

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