jquery用它的值替换每个输入。然后切换/切换回输入

时间:2010-12-03 00:27:37

标签: jquery ajax dom dom-manipulation

我有一个由AJAX请求创建的表。每个TD都有一个文本框输入。这允许用户编辑内容。我想要一个“只读”模式,用户无法编辑内容(由用户自行决定)。为此,我希望用户能够按下按钮(单选按钮也可以),用

标签替换每个文本框输入,其中包含文本框的值作为其文本。目前,我的代码用文本“object Object”替换每个Inputs。 (也许我还没有正确地将值转换为文本字符串?)任何提示让我知道出错的地方都会受到很大的影响。谢谢!

这是我目前的剧本:

<script type="text/javascript">
    $("#permissionsbutton").live('click',function(){
        sss = $('.cells').each(function(){$(this).val()});
        $(".cells").replaceWith("<p class='readonlycells' type='text'>" + sss + "</p>");
    });
    // if this worked, I would write another few lines
    // to be able to switch back to having inputs
</script>

这是HTML的外观片段:

<div id="readwrite" class="settings">
    <h3>Permissions</h3>
    <button id="permissionsbutton">Switch to Read Only Mode</button>
</div>
<table><tr>
    <td><input class='cells' type=text value='Steve'></td>
    <td><input class='cells' type=text value='Mary'></td>
    <td><input class='cells' type=text value='Big Bird'></td>
</tr></table>

3 个答案:

答案 0 :(得分:3)

jQuery的each函数返回调用它的jQuery对象(在你的情况下是$('cells'))。因此,您当前的代码将使用jQuery对象替换.cells选择器匹配的每个元素,该对象序列化为“对象对象”。

你想要的更像是

$("#permissionsbutton").live('click', function() {
    $(".cells").each(function() {
        $(this).replaceWith($(this).val());
    }
});

答案 1 :(得分:1)

$("#permissionsbutton").live('click',function(){ 
  $('.cells').each(function(){
    var cell=$(this);
    cell.replaceWith('<span class="cells_ro">'+cell.val()+'</span>');
  }); 
});

或者只是禁用单元格:

$("#permissionsbutton").live('click',function(){ 
  $('.cells').attr('disabled',true);
});

答案 2 :(得分:0)

怎么样:

$("#permissionsbutton").click(function(){
$('.cells').attr('disabled','disabled');
});

Try it here