1

我在这里遇到了javascript循环的小问题。

我有一个点击方法,它从 json 文件接收数据并将该内容放入 div。

在 jquery ajax 成功方法看起来像这样。

'success' : function(data) {
                items.push('<div class="home-page-slide-item"><ul>');   
        $.each(data, function(i, item) {
            if(!item.noData) {
                if(i % 7 == 0) {
                items.push('</ul></div><div class="home-page-slide-item"><ul>');
            }
                    
            items.push('<li><a href="' + item.link + '"><img src="' + item.poster + '" /><span>' + item.title + '</span></a></li>');
            }
                });
                $("div#" + $.cookie('type') + "-slides .home-page-slides").html(items.join(''));
        }

在每 7 个列表项之后,它必须包含在 ul 和 div 标签中。
它确实包装了,但它还在此循环之前添加了第一个额外的 div > ul 标签,我该如何删除它?如何在成功方法“items”数组中重新排序以获得想要的结果?

这是我得到的屏幕。

这是我得到的屏幕。

4

4 回答 4

2
if(i % 7 == 0  && i > 0) { //skip first occasion since 0 % 7 === 0

}
于 2012-05-29T07:13:26.513 回答
0

我认为您在推送之前检查了 if(i % 7 == 0) 。你必须在推后尝试这个

'success' : function(data) {
                items.push('<div class="home-page-slide-item"><ul>');   
        $.each(data, function(i, item) {


            items.push('<li><a href="' + item.link + '"><img src="' + item.poster + '" /><span>' + item.title + '</span></a></li>');

            if(!item.noData) {
                if(i % 7 == 0) {
                items.push('</ul></div><div class="home-page-slide-item"><ul>');
            }


            }
                });
                $("div#" + $.cookie('type') + "-slides .home-page-slides").html(items.join(''));
        }
于 2012-05-29T07:13:27.440 回答
0

改变

if(i % 7 == 0) {

if(i > 0 && i % 7 == 0) {

那是因为0 % 7 == 0

于 2012-05-29T07:13:33.263 回答
0

不是 0 % 7 = 0 吗?我认为您还应该检查 i = 0 并删除这种情况,有点像这样: if(!item.noData && i != 0) { ... }

于 2012-05-29T07:17:51.123 回答