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

jQuery: How to push elements with two values to an array

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

我有一个很大的 HTML table 和一些 editable TD,其中每个 TD 都有 class“editable”。

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

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

我的jQuery:

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

有人可以帮我解决这个问题吗?

提前致谢,蒂姆。

你可以这样试试:

    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;
});

你应该推一个对象:

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()
;