循环到每个td并获取其文本,然后用输入框替换每个td的内容

时间:2015-05-26 08:12:58

标签: javascript jquery

点击表格tr后,我想循环浏览所点击的td中的每个tr并获取文字,然后替换每个td的内容带有一个输入复选框,其中包含该被点击表tdtr个文本的值。

我的HTML:

<table>
    <thead>
        <th>Name</th>
        <th>Address</th>
        <th>Phone</th>
    </thead>
    <tbody>
        <tr data-id="1">
            <td>Jason</td>
            <td>USA</td>
            <td>Not specified</td>
        </tr>
        <tr data-id="2">
            <td>Micheal</td>
            <td>USA</td>
            <td>Not specified</td>
        </tr>
        <tr data-id="3">
            <td>Jason</td>
            <td>Thailand</td>
            <td>222-222</td>
        </tr>
    </tbody>

我的剧本

$("table tr").click(function(){
    $("td", this).each(function(){
        var this_text = $("this").text();
        //I dont know what to do next here
    });
}); 

为了锐化细节,当点击任何表格tr时,它将循环到其每个子节目(td)并获取其文本,替换每个孩子的内容( td的内容)带有一个输入复选框,其中包含每个孩子的文本(td&#39; s文本)的值。

3 个答案:

答案 0 :(得分:0)

您可以使用:

$("table tr").click(function(){
  $("td:not(:has(input))", this).html(function(i,html){
    return  "<input type='text' value='" + html + "'/>";
  });
}); 

<强> Working Demo

答案 1 :(得分:0)

你可以

&#13;
&#13;
def get_emp_det(self, cr, uid, ids, emp_i, context=None):
    v={}
    if emp_i:
        employee = self.pool.get('hr.employee').browse(cr, uid, emp_i, context=context)
        if employee.department_id.id:
            v['depat'] = employee.department_id and employee.department_id.id or False
        if employee.work_email:
            v['wk_mail'] = employee.work_email
        if employee.work_phone:
            v['wk_cnt'] = employee.work_phone

return {'value': v}
&#13;
$("table").on('click', 'tbody tr:not(.editable)', function() {
  $(this).addClass('editable')
  $("td", this).not(':has(input)').each(function() {
    var $input = $('<input />', {
      value: this.innerHTML.trim()
    });
    $(this).html($input)
  });
});
&#13;
&#13;
&#13;

答案 2 :(得分:0)

只需添加此行

即可
 $(this).html('<input type="text" value="'+this_text+'"/>');

所以它会像这样

$("table tr").click(function(){
    $("td", this).each(function(){
        var this_text = $(this).text();
        $(this).html('<input type="text" value="'+this_text+'"/>');
    });
}); 

Fiddle Link

顺便说一下,你的代码在行

中有错误
var this_text = $("this").text();

$("this")将只是$(this)

<强>更新
如果你想在将来保存文本值,请点击你需要做更多编码,如:

    $("table tr").click(function(){
    $("td", this).each(function(){
        var inputFound=$(this).find('input');
        if(inputFound.length == 0)
        {
             var this_text = $(this).text();
            $(this).html('<input type="text" value="'+this_text+'"/>');
        }

    });
}); 

See this update