我使用骨干建立了一个网站,这样页面加载一次,所有其他内容都使用ajax动态加载。在页面底部,我有FB,LinkedIN,Twitter和G +的社交媒体链接。我今天一直在努力确保在更新当前网址时更新这些链接,并且当我使用它时,twttr.widgets.load()的行为不正常。这是我的相关代码:
HTML:
<span id='twitterholder'></span>
<script src='//platform.twitter.com/widgets.js'></script>
JS:
$(document).ajaxComplete(function() {
try {
$('#twitterholder').empty(); // remove the current button
var t = $("<a href='https://twitter.com/share' class='twitter-share-button'>"); // create a new button
$(t).attr('data-text', document.title); // set the title
$(t).attr('data-url', location.href); // set the url
$(t).appendTo($('#twitterholder')); // add the button to the page
twttr.widgets.load();
} catch(ex){}
});
(是的,我可以在创建新元素的同时设置网址和标题,但这不是这个问题的重点 - 请让我们放下这个问题)当我做的时候这个,按钮刷新 - 我可以看到它发生 - 但它始终使用之前的标题和网址。我做错了什么?
我的工作方式:
与此同时,我不是将脚本加载到页面主体中加载widgets.js,而是将其添加为我的ajaxComplete函数中的第二个元素。当它加载时,它会自动寻找卸载的推送按钮,并加载它们,当它以这种方式发生时,按钮具有正确的标题和网址。但每次重新加载脚本都是草率的,我宁愿不这样做。