代码之家  ›  专栏  ›  技术社区  ›  Martin Ongtangco

是否可以使用jquery将一个DIV移动到另一个DIV中而不重新呈现HTML?

  •  1
  • Martin Ongtangco  · 技术社区  · 14 年前

    好吧,我可能会迷惑一些能够回答这个问题的人,我会按照我理解的方式设置这个问题。请容忍我。

    假设我有一个这样的DIV数组:

    <div id="par1"><span>Text 1</span></div>
    <div id="par2"><span>Text 1</span></div>
    <div id="par3"><span>Text 1</span></div>
    <div id="par4"><span>Text 1</span></div>
    

    然后,我有一个隐藏的DIV,它有一个类似于编辑器的文本框:

    <div id="editor" style="display: hidden"><input id="uniqueID$textbox" type="text" /></div>
    

    我想在jquery中实现的是 视觉上 显示 编辑编辑器 当我单击上面的DIV时,在每个DIV中都有一个编辑器。我不打算在这些分区中单独设置输入框,并在需要时显示它们,而只打算为每个分区使用一个文本框。

    我希望我能很好地解释我的问题,希望你们能帮忙

    3 回复  |  直到 14 年前
        1
  •  1
  •   jAndy    14 年前

    您可能需要替换 <span> 用一个 <input> 单击时的元素,如

    $(function(){
      $('span').bind('click', function(){
         $(this).replaceWith($('<input/>', {
            id:       'newinp',
            type:     'text',
            focusout: function(){
               $(this).replaceWith('<span>' + $(this).val() + '</span>');
            }
         }));       
         $('#newinp').focus();
      });
    });​
    

    工作示例: http://www.jsfiddle.net/qbDKN/

        2
  •  1
  •   annakata    14 年前

    您不能避免重新呈现HTML,但我怀疑您只是想重新呈现整个页面。当然,在JS中是可能的,在jquery中,我相信您希望 detach() 其中一个 append() / prepend() / *pendTo() 文档示例中的方法 here .

        3
  •  0
  •   Sarfraz    14 年前

    您可以使用ID克隆该DIV editor 像这样放进点击过的分格里:

    var $clone = $('#editor').clone();
    
    $('div[id^="par"]').click(function(){
      $(this).append($clone);
    });
    

    See the working example here