1

编辑:由于布兰登的例子,我设法获得了最新的 10 件物品。但现在发生了其他事情。在我添加代码以仅加载 10 个项目之前,单击一个项目将隐藏除单击的项目之外的所有内容,而不是显示与其连接的视频。现在我添加了这段代码,单击项目时内容不再显示。我试图找出是否是因为关闭标签或其他东西有问题,但我无法弄清楚。

所以它来自于function itemClick(){部分。

这是我的脚本:

$(document).ready(function(){
        $.ajax({
            type: "GET",
            url: "http://www.flabber.nl/rss/nakko/webzap",
            dataType: "xml",
            success: function(xml) {
            var $items = $(xml).find('item');
                for(var i = 0; i < $items.length && i < 10; i++){
                var myObj = $items.eq(i);
                    var urllist = myObj.find('link').text();
                    var node = urllist.substring(urllist.lastIndexOf('-')+1);
                    var id = node;
                    var video5 = myObj.find('hosted-video-url').text();
                    var playvid5 = "playVideo('video5')";
                    playvid5 = playvid5.replace("video5", video5);
                    var title = myObj.find('title').text();
                    var url = myObj.find('link').text();
                    var brief = myObj.find('teaser').text();
                    var long = myObj.find('lees-verder').text();
                    var ytube = "";
                    var src = myObj.find('iframe').attr('src');
                    var match = /embed\/([A-Za-z0-9_]+)/.exec(long);
                    if(match) ytube = match[1]; // Found it!
                    var playytube = "playVideo('http://www.youtube.com/watch?v=ytube')";
                    playytube = playytube.replace("ytube", ytube);
                    var pubDate = myObj.find('pubDate').text();
                    var img = myObj.find('image').text();
                    $('<p class="items" class="click_'+id+'" id="link_'+id+'" style="width:100%"></p>').appendTo('.class2');
                    $('<div class="terug" style="margin-bottom: 1px; margin-left: 1%"><img src="images/terug.png"></div>').appendTo('#link_'+id);
                    $('<h2 class="title_list" style="padding-top: 10px; border-top: 1px solid #72b252;"></h2>').html(title).appendTo('#link_'+id);
                    $('<div class="introtekst"><a href="#"></a></div>').html(brief).appendTo('#link_'+id);
                    $('<div class="screenshot"></div>').html('<img src="'+img+'" height="120"/>').appendTo('#link_'+id);
                    $('<h2 class="title"></h2>').html(title).appendTo('#link_'+id);
                    $('.terug').hide();

                        function itemClick(){
                    $('.items').hide();
                        $('.terug').show();
                        $('#link_'+id).unbind('click');
                        $('<div class="introtekst_gal"><a href="#"></a></div>').html(brief).appendTo('#link_'+id);
                        $('<div class="html5vid"></div>').html('<a href="#" onclick="'+playvid5+'"><img src="'+img+'" style="margin-bottom: 20px;"/><div class="play"><img src="images/play.png" /></div></a>').appendTo('#link_'+id);
                        $('<div class="content"></div>').html('<a href="#" onclick="'+playytube+'"><img src="'+img+'" style="margin-bottom: 20px;"/><div class="play"><img src="images/play.png" /></div></a>').appendTo('#link_'+id);
                        $('<div class="openbrowser" id="link_'+id+'"></div>').html('<a href="'+url+'"><img src="images/naarf.png" /></a>').appendTo('#link_'+id);   
                        $(this).toggle();
                        if (video5 == ""){
                                                $('.html5vid').remove();
                                                $('.screenshot').hide();
                        }
                        else {
                                                $('.content').remove();
                                                $('.screenshot').hide();                                                    
                        }
                        };



                    $('#link_'+id).bind('click', itemClick);                        

                    $('.terug').mousedown(function(){
                    $(".items , .screenshot").show();                       
                    $(".content , .openbrowser , #videoplayer-0 , #videoplayer-1 , .html5vid , .introtekst_gal" ).remove();
                    $(".terug").hide();
                    $('#link_'+id).bind('click', itemClick);                                                                        

                    });

                    document.addEventListener("backbutton", function () {   
                        $(".items , .screenshot").show();
                        $(".content , .openbrowser , #videoplayer-0 , #videoplayer-1 , .html5vid , .introtekst_gal").remove();
                        $(".terug").hide();
                        $('#link_'+id).bind('click', itemClick)
                    }, false); 

                };


            }

        }); 

    });
4

1 回答 1

1

如果您对返回的 XML 有任何控制权,我建议您限制那里返回的项目数量。您将获得更好的性能,因为当您只需要 10 个时您不需要传输所有 n 个项目。

如果这不可能,那么经典的 for 循环应该足以限制已处理项目的数量。

//...            
success: function(xml) {
    var $items = $(xml).find('item');
    for(var i = 0; i < $items.length && i < 10; i++){
        var myObj = $items.eq(i);
        var urllist = myObj.find('link').text();
        var node = urllist.substring(urllist.lastIndexOf('-')+1);
        var id = node;
        var video5 = myObj.find('hosted-video-url').text();
        var playvid5 = "playVideo('video5')";
        //...
    }
}
//...                             

​</p>

于 2012-04-10T11:48:08.680 回答