0

リストの最初のdivをbox2、2番目と3番目、box、4番目をbox3に設定してから、ボックス1から4を繰り返します。

カウンターでそれを行うためのより短い方法かどうか興味があります。

jQuery(document).ready(function($) {
var repos = $('#repositories');
var username = 'username';
var count = 0;
$.getJSON('http://github.com/api/v2/json/repos/show/' + username + '?callback=?',      function(data, status) {
    $.each(data.repositories.reverse(), function() {
        if (this.name != username + '.github.com') {
            count++;
            if (count == 1) {
                var boxes = 'box2';
            } else if (count == 4) {
                var boxes = 'box3';
                count = 0;
            } else {
                var boxes = 'box';
            }
            line = $('<div class="' + boxes + '"> <h3>' + this.name + '</h3> <p>' + this.description + '</p> <p><a href="' + this.url + '">more...</a></p> </div>').hide();
            $(repos).append(line);
            $(line).fadeIn(500);
        }
      });
  });
4

3 に答える 3

1

あなたが探しているのはモジュロです。

count = ( count + 1 ) % 5;

これで、カウントは無期限に増加するのではなく、0、1、2、3、4、0、1、2、3、4などのシーケンスになります。

あなたのboxesクラスは少し奇妙に見えcount = 0ます。'count=2'とcount = 3すべての結果が"box"。それがエラーではないと仮定すると、私はおそらくそれを次のように書くでしょう:

classes = ['box', 'box2', 'box', 'box', 'box3'];
boxes = classes[count];

そうすれば、私にはもう少し読みやすくなり、必要に応じてロジックを簡単に再調整できます。

于 2012-01-24T00:20:32.373 に答える
1

次のような行を使用できます。

var boxes = (count == 1) ? 'box2' : (count == 4) ? 'box3' : 'box';
count = (count == 4) ? 0 : count + 1;
于 2012-01-24T00:01:49.830 に答える
1

countゼロに等しくない限り、変数の実際の値から1を削除しているように見えますか?これが事実である場合、あなたはこれを行うことができます:

var boxes = (count === 0) ? 'box' : 'box' + (count - 1);

4つごとに繰り返すには、count変数が4を超えている場合は、変数をリセットします。

count++;
if (count > 4) {
    count = 1;
}

コードの編集バージョンは次のとおりです。

jQuery(document).ready(function($) {
    var $repos    = $('#repositories'),
        username  = 'username',
        count     = 0;
    $.getJSON('http://github.com/api/v2/json/repos/show/' + username + '?callback=?',      function(data, status) {
        var output = [];
        data.repositories = data.repositories.reverse();
        for (var i = 0, len = data.repositories.length; i < len; i++) {
            if (data.repositories[i].name != username + '.github.com') {
                count++;
                if (count > 4) {
                    count = 1;
                }
                var boxes = (count === 0) ? 'box' : 'box' + (count - 1);
                output[output.length] = '<div class="' + boxes + '"> <h3>' + data.repositories[i].name + '</h3> <p>' + data.repositories[i].description + '</p> <p><a href="' + data.repositories[i].url + '">more...</a></p> </div>';
            }
        }
        var $line = output.join('').hide();
        $repos.append($line);
        $line.fadeIn(500);
    });
});
于 2012-01-24T00:04:50.947 に答える