【问题标题】:jQuery return appended elementjQuery返回附加元素
【发布时间】:2013-07-14 06:36:24
【问题描述】:

早上好,我有这段代码可以将数字分为奇数和偶数类别。它通过检查数字并在必要时创建一个新类别来做到这一点。在创建新类别后,它会立即附加一个包含数字的新行。问题是它倾向于跳过新类别的第一个元素(即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

【问题讨论】:

    标签: jquery append return


    【解决方案1】:

    我已将您的 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);
    }
    

    【讨论】:

      【解决方案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)
      };
      

      【讨论】:

      • 这正是我需要的,谢谢。但为什么它不适用于append
      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 2021-01-20
      • 2012-01-11
      • 2017-01-16
      • 2014-11-20
      相关资源
      最近更新 更多