我有一个页面,用户点击按钮(“生成”),使用从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)部分,但是现在我只是担心上面概述的第一部分。
希望这有意义......任何想法如何实际做到这一点?感谢这位完整新秀的支持。
答案 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();
});
});