Javascript 如何将结果列表中的项应用于当前对象的父Div标记?
我正在尝试构建一个函数,将Facebook喜欢的数量插入Div标签。到目前为止,我有一个脚本,可以从另一个名为“entry”的Div标记中的Div标记获取URL,然后使用.getJSON()方法检索每个条目的Facebook喜欢次数。但是,我无法获取Facebook喜欢插入每个条目的Div标记中的每个检索值。请注意,我简化了我的代码,以提醒每个类似Facebook的值。这就是我到目前为止所做的:Javascript 如何将结果列表中的项应用于当前对象的父Div标记?,javascript,jquery,json,Javascript,Jquery,Json,我正在尝试构建一个函数,将Facebook喜欢的数量插入Div标签。到目前为止,我有一个脚本,可以从另一个名为“entry”的Div标记中的Div标记获取URL,然后使用.getJSON()方法检索每个条目的Facebook喜欢次数。但是,我无法获取Facebook喜欢插入每个条目的Div标记中的每个检索值。请注意,我简化了我的代码,以提醒每个类似Facebook的值。这就是我到目前为止所做的: <div class="entry"> <div class="fburl"&
<div class="entry">
<div class="fburl">https://graph.facebook.com/zombies</div>
<div class="facebook-likes"></div>
</div>
<div class="entry">
<div class="fburl">https://graph.facebook.com/starwars</div>
<div class="facebook-likes"></div>
</div>
因此,我尝试迭代每个条目,获取它的Open Graph URL,检索Likes值,然后将其插入适当的Div标记中,因此代码应呈现为:
<div class="entry">
<div class="fburl">https://graph.facebook.com/zombies</div>
<div class="facebook-likes">2,586 Likes</div>
</div>
<div class="entry">
<div class="fburl">https://graph.facebook.com/starwars</div>
<div class="facebook-likes">8,905,721 Likes</div>
</div>
https://graph.facebook.com/zombies
2586喜欢
https://graph.facebook.com/starwars
8905721喜欢
请参见:
演示:
注意:使用children()
要比使用find()
稍微有效一些,因为它将DOM遍历限制在单个级别()。通过var$this=$(this)
兑现jQuery对象$(this)
的效率也稍高一些,因为它可以防止不必要的选择器解释()。您可能需要这样做
$(document).ready(function(){
$(".entry").each(function() {
var entry=$(this), fbURL=$(".fburl", entry).html(),
el=$('.facebook-likes', entry);
$.getJSON(fbURL, function(fbData) {
el.html(numberWithCommas(fbData['likes'])+" Likes");
});
});
});
千位分隔符函数
更新:
或者,您可以使用(使用数据属性),而无需为fburl
添加额外的div,即
<div class="entry">
<div data-fburl="https://graph.facebook.com/zombies" class="facebook-likes"></div>
</div>
谢谢,我不知道用这种方式缓存$。我喜欢这个代码,因为它很简单。我不知道为什么我自己不能想出这个,似乎我已经尝试过这个组合,但这可能是因为我是如何使用.find()的,也可能是因为我之前使用了fbData.likes。谢谢,我喜欢使用数据fburl,所以我会将它合并到coderabbi编写的内容中。
$(document).ready(function(){
$(".entry").each(function() {
var entry=$(this), fbURL=$(".fburl", entry).html(),
el=$('.facebook-likes', entry);
$.getJSON(fbURL, function(fbData) {
el.html(numberWithCommas(fbData['likes'])+" Likes");
});
});
});
function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
<div class="entry">
<div data-fburl="https://graph.facebook.com/zombies" class="facebook-likes"></div>
</div>
$(".entry").each(function() {
var entry=$(this), fbURL = $(".facebook-likes", entry).attr('data-fburl'),
el=$('.facebook-likes', entry);
$.getJSON(fbURL, function(fbData) {
el.html(numberWithCommas(fbData['likes'])+" Likes");
});
});