代码之家  ›  专栏  ›  技术社区  ›  gravitation

使用jquery重新排列div层次结构

  •  0
  • gravitation  · 技术社区  · 15 年前

    我正在使用jQuery的 form plugin 异步提交表单。服务器通过设置ajaxForm调用的目标,将进入div#boardcontainer的HTML发回。这个很好用。

    ...
        var options = { 
          target:        '#boardcontainer',    // target element(s) to be updated with server response 
          beforeSubmit:  showRequest,  // pre-submit callback 
          success:       showResponse  // post-submit callback 
          };
        $('#myForm').ajaxForm(options); 
    ...
    

    <div id="board">
    ...
    </div>
    <div id="status">
    ...
    </div>
    

    “#board”是一个由服务器预先呈现的巨大HTML表。“#status”是一条短消息,最好放在除#boardcontainer之外的div中。

    处理这种情况的最好方法是什么?jquery可以更改div的父级吗?如果是这样的话,我可以在post-submit回调中更改父级,但我似乎找不到一种方法。

    2 回复  |  直到 15 年前
        1
  •  3
  •   tvanfosson    15 年前

    在成功回调中,可以使用appendTo重新排列div。或者,您可以返回json并在成功回调中构建div。

     $('#status').appendTo('#realTarget');
    

    编辑 :检查后,appendTo本身执行您需要它执行的操作,而不会丢失事件处理程序。

        2
  •  0
  •   ankitkanojia TStamper    4 年前

    我最终用json构建了div(不过,div的html嵌入为字符串)

    代码如下:

    $(document).ready(function () {
        var options = {
            beforeSubmit: showRequest,  // pre-submit callback 
            success: showResponse,  // post-submit callback 
            dataType: 'json'
        };
        $('#myForm').ajaxForm(options);
    });
    
    function showResponse(data) {
        $('#statusTarget').html(data.status);
        $('#boardcontainer').html(data.board);
    };
    

    它可以工作,并且每次提交表单时,都会用新的html替换#statusTarget和#boardTarget。