Невозможно отобразить данные для каждого поста после достижения через jQuery

0

Это сценарий, который я сделал первым, чтобы достичь счета facebook и twitter

http://jsfiddle.net/v8gw6/1/

и он работает хорошо, но потом я попробовал его на нескольких постах, и он не отвечает, и это вторая скрипка. http://jsfiddle.net/v8gw6/3/

Это код, который я использовал во второй скрипке HTML

<div class='post'>
    <div class='sharing-bar' data-href='http://www.bloggerever.com/2014/05/codeanywhere-most-useful-and-multi.html'>
<span class='sum'></span>

<span class='facebook'></span>

<span class='twitter'></span>

    </div>
</div>
<div class='post'>
    <div class='sharing-bar' data-href='http://www.bloggerever.com/2014/05/which-blog-type-suites-you-best-head-to.html'>
<span class='sum'></span>

<span class='facebook'></span>

<span class='twitter'></span>

    </div>
</div>

Jquery

$(function () {
    $('.post').each(function () {
        var url = $(this).find('.sharing-bar').attr('data-href');
        var fburl = "http://graph.facebook.com/?id=" + url;
        $.getJSON(fburl, function (data) {
            if (data["shares"] != undefined) {
                var fbshares = data["shares"];
            } else {
                var fbshares = 0;
            }
            $(this).find(".sharing-bar .facebook").append(fbshares);
            var url = $(this).find('.sharing-bar').attr('data-href');
            var twitterurl = 'http://urls.api.twitter.com/1/urls/count.json?url=' + url + '&callback=?';
            $.getJSON(twitterurl, function (data) {

                var twittershares = data["count"];
                $(this).find(".sharing-bar .twitter").append(twittershares);
                var sumofboth = fbshares + twittershares;
                $(this).find(".sharing-bar .sum").append(sumofboth);
            });

        });
    });
});

Пожалуйста помоги

  • 0
    Ваш вызов ajax терпит неудачу во 2-ой скрипке
Теги:

1 ответ

1
Лучший ответ

Проблема с this ссылкой, потому что ваше эта ссылка изменение getJson метод не указывая на свой post div, чтобы он не нашел .facebook срока

СМОТРИ НИЖЕ

$('.post').each(function () {
    var url = $(this).find('.sharing-bar').attr('data-href');
    var fburl = "http://graph.facebook.com/?id=" + url;
    // here this is .post object
    var $this= $(this);
    $.getJSON(fburl, function (data) {
        var fbshares = 0;
        if (data["shares"] != undefined) {
            fbshares = data["shares"];
        }
        // here this is not .post object, so store .post object in variable $this and use it.
        this.find(".sharing-bar .facebook").text(fbshares); // it will not work.
        $this.find(".sharing-bar .facebook").text(fbshares); // it will work
    });

    // rest of your code goes here
});
  • 0
    Спасибо, ваша концепция привнесла в меня массу знаний. Спасибо друг.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню