单击“"复制"文本

时间:2013-06-28 12:48:59

标签: jquery twitter

我有一个页面,用户点击按钮(“生成”),使用从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> 

按下按钮后,我正在使用div的内容发送data-text。这是我的问题:

首先,如果试试这个:

$(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内容发生变化),然后用div的新内容更新data-text。当然,这不起作用。

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

希望这有意义......任何想法如何实际做到这一点?感谢这位完整新秀的支持。

1 个答案:

答案 0 :(得分: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();
    });
});