1

おはようございます。数字を奇数と偶数のカテゴリに分類するコードがあります。これは、数値を調べて、必要に応じて新しいカテゴリを作成することによって行われます。新しいカテゴリが作成された直後に、番号を含む新しい行が追加されます。問題は、新しいカテゴリの最初の要素をスキップする傾向があることです (つまり、1 と 2 は対応するカテゴリに含まれません)。

カテゴリを再度検索することでこれを解決できます(コメントアウトされたコード(jsfiddle l:12))が、addNewCategory関数から新しく作成されたカテゴリ要素を取得したいのですが、それは可能ですか?

var content = $('#content');

// add one row to the category
var addRow = function (number) {
    var categoryId = (number % 2 == 0 ? 'even' : 'odd'),
        $category = content.find('#category_' + categoryId)
    ;

    // category exists?
    if(!$category.length) {
        $category = addNewCategory (number);
        //$category = content.find('#category_' + categoryId);
    }

    // prepare new row
    var row = '<div class="row">' + number + '</div>';
    $category.append(row);
};

    // add new category
var addNewCategory = function(number) {
    var categoryId = (number % 2 == 0 ? 'even' : 'odd'),
        category = '<div class="category" id="category_' + categoryId + '">' + categoryId + '</div>';

    content.append(category);
    return $(category);
};

// start
for(var i = 1; i < 10; i++) {
    addRow(i);
}

jsfiddle: jsfiddle

4

2 に答える 2

2

.appendTo() を試してください

var addNewCategory = function(number) {
    var categoryId = (number % 2 == 0 ? 'even' : 'odd'),
        category = '<div class="category" id="category_' + categoryId + '">' + categoryId + '</div>';

    return $(category).appendTo(content)
};
于 2013-07-16T07:30:38.493 に答える
0

Fiddle をそのコードhttp://jsfiddle.net/rdhTa/1/に更新しました。

var content = $('#content');

// add one row to the category
var addRow = function (number) {
    var categoryId = (number % 2 == 0 ? 'even' : 'odd');
    var category = content.find('#category_' + categoryId) ;

    // category exists?
    if(category.length == 0) {
        addNewCategory (number);
        category = content.find('#category_' + categoryId);
    }

    // prepare new row
    var row = '<div class="row">' + number + '</div>';
    category.append(row);
};

    // add new category
    var addNewCategory = function(number) {
    var categoryId = (number % 2 == 0 ? 'even' : 'odd'),
    category = '<div class="category" id="category_' + categoryId + '">' + categoryId + '</div>';

    content.append(category);
    return;
};

// start
for(var i = 1; i < 10; i++) {
    addRow(i);
}
于 2013-07-16T07:33:51.177 に答える