JQuery更改文本以输入

Rai*_*Son 3 jquery text input

我有一个如下表格设置:

<table>
  <tr>
    <td class="url">
       <a href="http://www.domainname.com/page1.html" />
    </td>
  </tr>
  <tr>
    <td class="url">
       <a href="http://www.domainname.com/page2.html" />
    </td>
  </tr>
  <tr>
    <td class="url">
       <a href="http://www.domainname.com/page3.html" />
    </td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

我基本上希望锚点在链接点击时更改为包含href的文本框,下面是示例结果:

<table>
  <tr>
    <td class="url">
       <input type="text" value="http://www.domainname.com/page1.html" />
    </td>
  </tr>
  <tr>
    <td class="url">
       <a href="http://www.domainname.com/page2.html" />
    </td>
  </tr>
  <tr>
    <td class="url">
       <a href="http://www.domainname.com/page3.html" />
    </td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

当单击另一个锚标记或文本框未聚焦时,任何文本框将返回为锚点,单击的文本框将更改为文本框.

cle*_*tus 13

这是一个开始.使用单击事件添加到链接和模糊事件到输入live().

$(function() {
  $("td.url a").live("click", function() {
    var parent = $(this).parent();
    $(this).replaceWith("<input type='text' value='" + $(this).attr("href") + "'>"); //closing angle bracket added
    parent.children(":text").focus();
    return false;
  });
  $("td.url :text").live("blur", function() {
    $(this).replaceWith("<a href='" + $(this).val() + "'>");
  });
});
Run Code Online (Sandbox Code Playgroud)

话虽这么说,对于这种事情,我不想像这样从DOM中删除元素.相反,我更喜欢隐藏/显示元素.例如:

<table>
  <tr>
    <td class="url">
       <a href="http://www.domainname.com/page1.html" />
       <input type="text">
    </td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

有:

td.url input { display: none; }
td.edit a { display: none; }
td.edit input { display: block; }
Run Code Online (Sandbox Code Playgroud)

$(function() {
  $("td.url a").click(function() {
    var a = $(this);
    a.next().val(a.attr("href")).focus();
    a.parent().addClass("edit");
    return false;
  });
  $("td.url :text").blur(function() {
    var txt = $(this);
    txt.prev().attr("href", txt.val());
    txt.parent().removeClass("edit");
  });
});
Run Code Online (Sandbox Code Playgroud)