我试图通过for循环附加一个Twitter脚本和一些HTML。循环分叉很好,直到我在末尾添加<script>
标签。我想要做的是让jQuery吐出我的数据,然后在信息下面放一个推特推文按钮。
我想知道是否有另一种方法可以让jQuery将脚本附加到我的#entries
div。
我的代码如下:
$.each(data.Entries, function(entriesIndex, entriesObject) {
if (entriesObject.Field21 == "Yes") {
if (entriesObject.Field15 == "Yes") {
$("<li />", {
html: '<p><a href="http://twitter.com/share">foo</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></p>'
// Add it to the page
}).appendTo("#entries");
} // end if entry = yes
} // end if approved = yes
}); // end for each loop
更新
看起来它将脚本放在页面上但不会触发 - 不太熟悉twitter脚本的工作原理,但想知道你们是否可以提供帮助!谢谢!
请参阅此处的示例页面:http://bostonwebsitemakeover.com/vote.html
$.each(data.Entries, function(entriesIndex, entriesObject) {
var p, tweet; // oh hey look, variables!
if (entriesObject.Field21 == "Yes") {
if (entriesObject.Field15 == "Yes") {
p = $("<p />", {
html: "<p>" + '<a href="' + entriesObject.Field19 + '" target="_blank">' + entriesObject.Field4 + "</p>" + '<img src="http://images.websnapr.com/?url=' + entriesObject.Field19 + '" />' + "</a>"
});
tweet = $('<script>').attr({
type: 'text/javascript',
src: 'http://platform.twitter.com/widgets.js'
});
} // end if entry = yes
} // end if approved = yes
$('<li class="entry">').append(p).append(tweet).appendTo('#entries');
}); // end for each loop
答案 0 :(得分:2)
$('<script>').attr({
type: 'text/javascript',
src: 'http://platform.twitter.com/widgets.js'
}).appendTo('#entries');
我认为会做到这一点。此外,在使用jQuery插入代码时,尝试使用.attr,.text等参数。使它更稳定,并半保护你免受XSS。
编辑 实际上,有趣的是,我认为这是推荐人禁止的。我似乎无法导入它,即使在jsfiddle,但我可以直接访问它。我正在考虑它......
没关系,似乎加载,只是没有出现在Google chrome / firebug DOM树中(但chrome显示它在资源时间轴中加载)。
答案 1 :(得分:1)
修改强> 哇,不理我。我没有仔细阅读你的问题。该脚本显然不是你的,因为它位于twitter.com哈哈。对不起。
tweet按钮的脚本是在widget.js脚本中加载的吗?如果是这样,它是你写的自定义脚本吗?我问,因为您可以修改按钮的单击处理程序而不是live()
,然后将字符串“click”和您想要的函数传递给处理程序。当动态添加到页面时,这会将处理程序附加到每个按钮。
答案 2 :(得分:0)
您可以以这种方式添加脚本;但是,许多脚本挂钩到某种类型的onload事件,当您通过脚本添加脚本时,页面onload事件不会触发。
如果它今天有效并且推特发生了变化,那么它明天可能会被打破。
答案 3 :(得分:0)
看起来像你的&lt; a&gt;缺少班级“twitter-share-button”
我认为从它看起来脚本会查找与该类的链接并生成按钮和推文计数(实际上是iframe)
我原以为你只需要在页面上加载一次脚本,但它可能无法处理由javascript动态构建的链接
修改 http://dev.twitter.com/pages/tweet_button_faq#multiple-buttons肯定会说只加载一次脚本