假设我使用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'>
如果你试试这个,你会看到当你第一次按下编辑时,按钮变为视图,但它不会再改变。这是为什么?
答案 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元素中发生的事情,而无需在内容更新后手动添加处理程序。