在jQuery中插入后更新DOM

时间:2009-10-11 14:01:07

标签: jquery ajax

假设我使用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>

同一级别的文件edit包含

<input type='submit' class='view' value='View'>

文件'view'包含

<input type='submit' class='edit' value='Edit'>

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

3 个答案:

答案 0 :(得分: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以来,代表实时已被 取代。

答案 1 :(得分:5)

像这样使用live

 $(".view").live("click",function(){
      $(this).parent().load("view");
    });

答案 2 :(得分:1)

jQuery使用“live”事件来处理动态添加的DOM元素中发生的事情,而无需在内容更新后手动添加处理程序。