jQuery:如何将具有两个值的元素推送到数组

时间:2015-07-23 18:45:59

标签: jquery arrays loops each

我是jQuery的新手,希望有人可以帮助我。

我有一个包含一些可编辑TD的大型HTML表,其中每个TD都有类" editable"。

现在我需要检查哪些可编辑的TD包含文本,然后创建一个包含相应TD名称和文字的数组。

到目前为止,我有以下哪些文本应该没问题,但我不确定如何在数组中获取相应的名称。

我的jQuery:

var edited = [],
    editedName;
$('.editable').not('.default').each(function(){
    editedName = $(this).attr('name)';
    edited.push( $.trim($(this).text()) );
});

有人可以帮我这个吗?

非常感谢蒂姆。

2 个答案:

答案 0 :(得分:1)

您可以尝试这样:

    var edited = [],

    $('.editable').not('.default').each(function(){
        var editedName = $(this).attr('name)';
        var editedText = $.trim($(this).text());

        var editedItem = {};
        editedItem.Name = editedName;
        editedItem.Text = editedText;

        edited.push(editedItem);
    });

然后,如果你想从编辑过的数组中读取值,你可以这样做:

$.each(edited, function(i, editedItem){    
      var $thisEditedItemName = editedItem.Name;
      var $thisEditedItemText = editedItem.Text;
});

答案 1 :(得分:0)

你应该推送一个对象:

var edited = [];
$('.editable').not('.default').each(function(){
    edited.push( {
        text: $.trim($(this).text()),
        name: $(this).attr('name')
    } );
});

您还可以使用map

来简化此操作
var edited = $('.editable')
    .not('.default')
    .map(function(){
        return {
            text: $.trim($(this).text()),
            name: $(this).attr('name')
        };
    })
    .get()
;