1

我正在尝试构建一个函数,用于将 Facebook 喜欢的数量插入到 Div 标签中。到目前为止,我有一个脚本可以从另一个名为“entry”的 Div 标记内的 Div 标记获取 URL,然后让 .getJSON() 方法检索每个条目的 Facebook 点赞数。但是,我可以' 不获取 Facebook Likes 的每个检索值以插入到每个条目的 Div 标签中。请注意,我将代码简化为提醒每个 Facebook Like 值的位置。这是我到目前为止所拥有的:

<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>

这是我的 jQuery:

$(document).ready(function(){
$(".entry").each(function() {
    var fbURL = $(this).find(".fburl").html();
    $.getJSON(fbURL, function(fbData) {
        var fbArr = fbData['likes'];
        alert(fbArr);
    });
});
});

所以我要做的是遍历每个条目,获取它的 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>

​ ​</p>

4

2 回答 2

1
$(document).ready(function() {
    $('.entry').each(function() {
        var $this = $(this),
            fbURL = $this.children('.fburl').html();
        $.getJSON(fbURL, function(fbData) {
            $this.children('.facebook-likes').html(fbData['likes'] + ' Likes')
        });
    });
});

见: http ://api.jquery.com/children

演示:http: //jsfiddle.net/9EALz/2/

注意:使用children()将比使用更有效,find()因为它将 DOM 遍历限制在单个级别(http://jsperf.com/find-vs-children/13)。$(this)通过兑现 jQuery 对象var $this = $(this)也稍微更有效,因为它可以防止不必要的选择器解释 ( http://jsperf.com/jquery-cache-vs-no-chace )。

于 2012-10-15T00:41:44.670 回答
1

你可能想要这个

$(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 fburl,即

<div class="entry">
    <div data-fburl="https://graph.facebook.com/zombies" class="facebook-likes"></div>
</div>

JS

$(".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");
    });
});
于 2012-10-15T00:43:13.957 回答