这个问题与我所追求的非常接近:Replace an Attribute in the Tweet Button with Jquery

但是,the suggested solution只能运行一次。也就是说,我不能在这样的switch语句中使用它:

    switch(element.id)
    {
        case "t1":
            $(document).ready(function(){
                $('a[data-text]').each(function(){
                    $(this).attr('data-text', Text_Variant_1);
                });
                $.getScript('http://platform.twitter.com/widgets.js');
            });
            break;
        case "t2":
            $(document).ready(function(){
                $('a[data-text]').each(function(){
                    $(this).attr('data-text', Text_Variant_2);
                });
                $.getScript('http://platform.twitter.com/widgets.js');
            });
        ...
    }

发生的情况是,data-text属性是根据先发生的情况设置的,之后不会更改。

如何根据需要多次更改Tweet Button的data-text属性?

更新:这是我正在处理的页面:http://zhilkin.com/socio/en/

特质表可以安全地忽略。我要对Sociotypes表执行的操作是,当您单击一种类型时,应在右侧说明下方的Tweet按钮的数据文本进行相应的更改。

现在,它的工作方式是这样的:如果我将鼠标悬停或单击“Don Quixote”,则数据文本将设置为“... Don Quixote ...”,如果以后单击“Dumas”,它将保持不变。反之亦然:如果我将鼠标悬停或单击“Dumas”,则数据文本将设置为“... Dumas ...”,并且如果单击“Don Quixote”,则不会更改。 (其他类型目前为空。)

因此,“Tweet按钮”仅在我第一次运行脚本时被更改,但是我需要随着类型的更改将其更新多次。

最佳答案

今天早上,我为此苦了几个小时,但终于成功了!实际上,问题在于您只能在页面中包含twitter widgets.js脚本一次,并且该脚本会在加载时评估data-text属性。因此,在您的示例中,您在加载脚本之前动态设置了data-text属性,它将按预期工作。但是,由于脚本已运行,因此您无法进行进一步的更新。

我看到this article建议您可以在运行时再次调用twttr.widgets.load()来重新评估和重新渲染按钮,但是这对我不起作用。这是因为该函数会重新评估<a>标签,而不是<iframe>标签!

因此,作为pointed out here的解决方案是从DOM中完全删除呈现的<iframe>,然后在调用<a>进行最终重新评估并将其转换为twttr.widgets.load()之前,使用具有所有适当属性的新<iframe>元素。

请参阅this fiddle作为工作示例!

关于javascript - 动态更改Tweet Button的 “data-text”内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10486354/

10-13 04:50
查看更多