1

我有一个页面,用户单击按钮(“生成”)以使用从 json 文件中提取的文本动态生成随机短语。该短语被放置在一个 div (#generated) 中,替换之前的内容(在单击按钮之前)。生成短语效果很好。我现在要添加的是用户单击推文按钮以共享该短语的一种方式。

这是推文按钮代码:

<div id="tweet_button">
<a href="http://twitter.com/share"
class="twitter-share-button"
data-text="This is what we want to change dynamically"
data-count="none">Tweet</a></div>

加上标题中的这个:

<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> 

data-text就是我希望在按下按钮后使用 div 的内容发推文的内容。这是我的问题:

首先,如果试试这个:

$(document).ready(function(){
$.getScript('http://platform.twitter.com/widgets.js');
$('a[data-text]').each(function(){
$(this).attr('data-text', $('#generated').text() );
});
});

那么当然,data-text从“这是我们想要动态更改的内容”到按下“生成”按钮之前 div 中的内容(即文档准备好时那里的内容)的变化,这不是我想要的. 所以,我想我可以使用这段代码并data-text更改为新生成的 div 内容:

$("generate").click(function() {
setTimeout(function(){
$.getScript('http://platform.twitter.com/widgets.js');
$('a[data-text]').each(function(){
$(this).attr('data-text', $('#generated').text() );
});
},
1000);
});

在我看来,这将等到单击“生成”按钮,延迟一秒钟(以确保 div 内容已更改),然后data-text使用 div 的新内容更新。当然,这是行不通的。

理想情况下,data-text每次单击“生成”按钮时都会更新。似乎有办法做到这一点(https://dev.twitter.com/discussions/890)部分,但现在我只是担心上面概述的第一部分。

希望这是有道理的......知道如何实际做到这一点吗?感谢这位完整菜鸟的支持。

4

1 回答 1

2

我把它变成了“重新生成”推文按钮:

http://jsfiddle.net/mattydsw/xAq5t/

$("#generate").click(function () {
    $("#tweet_button").empty();
    $("#tweet_button").append('<a href="http://twitter.com/share" class="twitter-share-button" data-text="' + $('#generated').text() + '" data-count="none">Tweet</a>');
    twttr.widgets.load();
});

当然你应该调整它,因为你使用 ajax 函数来改变“#generated”的文本

编辑

也许是这样的

$("#generate").click(function () {
    $('#generated').load('data.txt', function () {
        $("#tweet_button").empty();
        $("#tweet_button").append('<a href="http://twitter.com/share" class="twitter-share-button" data-text="' + $('#generated').text() + '" data-count="none">Tweet</a>');
        twttr.widgets.load();
    });
});
于 2013-06-28T13:09:52.540 回答