在jQuery中插入后更新DOM

ast*_*rog 2 ajax jquery

假设我使用jQuery将新内容加载到特定的DIV元素中.如果我现在想从DIV元素中捕获事件,我认为DOM必须以某种方式更新?处理这个问题的最佳方法是什么?

编辑:这是我的意思的一个例子:

<html>
  <head>
    <script type="text/javascript" src="jquery-1.3.2.min.js"></script>
    <script>
      $(document).ready(function(){
        $(".edit").click(function(){
          $(this).parent().load("edit");
        });
        $(".view").click(function(){
          $(this).parent().load("view");
        });
      });
    </script>
  </head>
  <body>
    <div class='someid'>
      <input type='submit' class='edit' value='Edit'>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

edit同一级别的文件包含的位置

<input type='submit' class='view' value='View'>
Run Code Online (Sandbox Code Playgroud)

和一个文件'view'包含

<input type='submit' class='edit' value='Edit'>
Run Code Online (Sandbox Code Playgroud)

如果你试试这个,你会看到当你第一次按下编辑时,按钮变为视图,但它不会再改变.为什么是这样?

Lui*_*ado 21

从jQuery 1.7.x开始,不推荐使用.live()方法.使用.on()附加事件处理程序.如果您使用的是旧版本,则应使用.delegate()优先于.live().

如帮助中所述,格式不会像本示例中所示那样发生很大变化:

$(selector).live(events,data,handler); // jQuery 1.3+
$(document).delegate(selector,events,data,handler); // jQuery 1.4.3+
$(document).on(事件,选择器,数据,处理程序); // jQuery 1.7+

如此以来1.7.x,两者代表已被superseeded .


Sin*_*hus 5

像这样使用直播:

 $(".view").live("click",function(){
      $(this).parent().load("view");
    });
Run Code Online (Sandbox Code Playgroud)