Jquery Twitter Parse Json - PullRequest
       4

Jquery Twitter Parse Json

0 голосов
/ 21 января 2011

У меня есть проблема, когда все работает более или менее, но это дает мне слишком много результатов.

Есть идеи?

var url = "search.twitter.com/search.json?q=%23ps3&rpp=15&from=mmgn&lang=en&callback=?";
$.getJSON(url, function(data) {
    $.each(data.results, function(i, item) {
        var tweet = item.text;
        var combinedRegex = /[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+|[@]+[A-Za-z0-9-_]+|[#]+[A-Za-z0-9-_]+/g,
            container = $('#tweet-container');
        var result, prevLastIndex = 0;
        combinedRegex.lastIndex = 0;
        while ((result = combinedRegex.exec(tweet))) {
            $('').appendTo('#tweet-container');
            $('').html(tweet.slice(prevLastIndex, result.index)).appendTo('.tweet');
            if (result[0].slice(0, 1) == "@") {
                $('').attr('href', 'http://twitter.com/' + encodeURIComponent(result[0].slice(1))).html(result[0]).appendTo(".tweet");
            } else if (result[0].slice(0, 1) == "#") {
                $('').attr('href', 'http://search.twitter.com/search?q=%23' + encodeURIComponent(result[0].slice(1))).html(result[0]).appendTo('.tweet');
            } else {
                $('').attr('href', result[0]).html(result[0]).appendTo(".tweet");
            }
            prevLastIndex = combinedRegex.lastIndex;
        }
        $('').append($('').html(tweet.slice(prevLastIndex)));
    });
});

Гиперссылка, ниже

1 Ответ

0 голосов
/ 21 января 2011

У вас здесь есть пара проблем: добавление элементов li и вставка ваших «первых» / «последних» элементов span.

1) вы вызываете .appendTo (". Tweet"), который выбирает ВСЕ элементы с классом tweet. Вместо этого создайте переменную для элемента li, а затем добавьте свои данные к этой переменной , например.

var $li = $('<li class="tweet" />');
$li.appendTo('#tweet-container');
...
$('whatever').appendTo($li);

2) На ваших элементах span вы также добавляете к ВСЕМ элементам .tweet (как указано выше). Похоже, вы хотите добавить элемент span только к первому и последнему элементу в вашем списке. Если это так, я бы посоветовал подождать до завершения цикла, а затем обернуть первый и последний элементы, например:

$('li',container).first().wrapInner('<span class="first"/>').end().last().wrapInner('<span class="last"/>');

Вот измененный код .

Вы также можете сделать свой jquery более эффективным, но это выходит за рамки вашего вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...