来自'tr td:first-child'的jQuery不受欢迎的效果

时间:2013-08-01 01:08:17

标签: jquery

我有一个动态HTML表,我在PHP中从查询中创建。创建后,用户可以单击编辑按钮,某些单元格可以编辑。当它们完成后,按下保存按钮,循环开始运行数据并将其存储在数组中。 几乎一切正常,获取作业#列的值存在一个小问题,它将两个值都放在我的数组的一个索引中。我做了一个小提示来展示过程jsFiddle并说明问题。因此,您可以看到我将所有数字存储在最后一个索引中。我确实需要所有这些,但我希望它们一次存储一个,这样它们每个都有自己的数组索引。

此外,我会在这里发布代码,即使我链接的小提琴可能更有用

var saveEdits = [];

$('#table_edit_projects').click(function () {
    $('#create_project').hide();
    $('#table_edit_projects').hide();
    $('#save_project_te').show();
    $('#cancel_save_project_te').show();
    $('.editable_content_td').attr('contenteditable', 'true');
    $('.editable_content_td').addClass('blue_td');
});

$('#save_project_te').click(function () {
    $('#save_project_te').hide();
    $('#cancel_save_project_te').hide();
    $('#create_project').show();
    $('#table_edit_projects').show();
    $('.editable_content_td').attr('contenteditable', 'false');
    $('.editable_content_td').removeClass('blue_td');

    $('.editable_content_td').each(function () {
        saveEdits.push($(this).text());
    });
    var id = $('.contentTable tr td:first-child');
    saveEdits.push($(id).text());
    $.each(saveEdits, function (index, value) {
        alert(index + ': ' + value);
    });

    /*This will be used to send the data and update the table in the database
    $.ajax({    
    url:'core/functions/update_projects.php',
    type: 'post',
    data: {'saveEdits': saveEdits},
    done: function(data) {
    // this is for testing
    }
    }).fail (function() {
        alert('error');
    }).always(function(data) {                                                  
        alert(data);    
    }); 
    */
    saveEdits = [];
});

1 个答案:

答案 0 :(得分:1)

问题在于,选择器$('.contentTable tr td:first-child')会选择这些元素中的每一个,并从所有元素中获取文本,从而产生16 17

我的建议是改变一些事情: 通过添加一个额外的选择器将id推入数组:

$('.editable_content_td, .content_td a').each(function () {
    saveEdits.push($(this).text());
});

然后删除你获得id的代码 - id现在应该在数组的开头

http://jsfiddle.net/NuLPC/8/