我有一个页面,用户点击一个按钮(“生成”),使用从json文件中拉出的文本动态生成一个随机短语。该短语被放在一个div (#generated)中,替换以前在那里(在单击按钮之前)的内容。生成短语工作得很完美。我现在想要添加的是一种方法,用户可以单击推文按钮来分享该短语。
下面是tweet按钮代码:
<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内容改变),然后用div的新内容更新data-text。当然,这是行不通的。
理想情况下,每次单击"generate“按钮时,data-text都会更新。似乎有一种方法可以完成这个(https://dev.twitter.com/discussions/890)部分,但现在我只是担心上面概述的第一部分。
希望这能让sense...any知道如何真正做到这一点?感谢这位新秀的支持。
发布于 2013-06-28 21:09:53
我把它做成了“再生”推文按钮:
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();
});
});https://stackoverflow.com/questions/17365100
复制相似问题