Создание / отображение результатов массива с помощью jQuery - PullRequest
0 голосов
/ 28 марта 2011

В настоящее время я работаю над веб-приложением и использую jGFeed для получения RSS-канала из моего блога.(В конце концов, я буду использовать jQTouch для создания пользовательского интерфейса.) Я могу получить контент, который мне нужен, теперь мне просто нужно сделать следующий шаг.

Мне нужно сделать следующее:Во-первых, отобразить список ссылок.Эти ссылки являются названиями каждой записи.Когда пользователь нажимает на эту ссылку, содержимое этой конкретной записи отображается для чтения пользователем.

У меня нет большого опыта в этом деле, поэтому я горжусь, что дошел до этоготочка.Но теперь мне нужно перейти на следующий уровень и использовать руководство по работе с массивами и заставить его работать в jQuery.Любые предложения или примеры будут с благодарностью.

Вот мой код:

<html>
<head> 
<title>TEST APP</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="jquery.jgfeed-min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

    $.jGFeed('http://feeds.feedburner.com/solidverbal/clickchorus/app', function(feeds){
        // Check for errors
        if(!feeds){
        // there was an error
        return false;
        }
        // do whatever you want with feeds here
        var title = "";
        var content = "";
        for(var i=0; i<feeds.entries.length; i++){
            var entry = feeds.entries[i];
            // Entry title
            title = title + "<li id=\"title\"" + i + ">" + entry.title + "</li>";
            // Entry content
            content = content + "<li id=\"content\"" + i + ">" + entry.content + "</li>";
        }
        $("#results_titles").html("<ul>" + title + "</ul>");
        $("#results_content").html("<ul>" + content + "</ul>");

    }, 10);
});
</script>

</head> 
<body> 

<div id="results_titles">LOADING</div>
<div id="results_content">LOADING</div>
</body>
</html>

1 Ответ

0 голосов
/ 28 марта 2011

Из того, что я понимаю, вы хотите хранить эти feeds.entries в массиве, даже если они уже есть в массиве. feeds.entries - это массив, который вы хотите. Так что feeds.entries [0] .title - это название, которое вам нужно, и feeds.entries [0] .content содержание. Попробуйте сделать что-то вроде этого:

//Create the <ul><li><a></a></li></ul> structure links
var sAnchors='<ul>';
for(var i=0; i<feeds.entries.length; i++){
   var sAnchors += "<li><a href='#link' id='title_"+i+"' class='giveFeeds'>feeds.entries[i].title</a></li>";
}
sAnchors += '</ul>';

//Append the <a>.
$('#results_titles').append(sAnchors);

//When the user clicks on the giveFeeds link....
$('.giveFeeds').live('click', function(e) {
//Get the feed number
var tmpId = $(e.target).attr('id');
//Returns the value after the '_' char and make sure it returns de number.
var id = parseInt(tmpId.split('_')[1]);
//Use the id value to get the desired feed
var wantedFeed = feeds.entries[id].content;
//Then do whatever you want with that entry
... 
});

У вас могут возникнуть проблемы с переменными, такими как feeds.entries, так как вы хотите, чтобы они были глобальными. Я предлагаю вам добавить все каналы отдельно в цикле "for" (sDivs = '"+ feeds.entries [i] .content +" ";). Таким образом, вам нужно будет использовать только идентификатор var (var id) = parseInt (...)) чтобы узнать, что вы хотите показать ($ ('# content' + id) .show ()). Наконец, вы можете добавить анимацию, чтобы сделать это более интересным (slideUp, slideDown, Оживите) посмотрите эти методы по сети.

...