假设我使用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 上.
像这样使用直播:
$(".view").live("click",function(){
$(this).parent().load("view");
});
Run Code Online (Sandbox Code Playgroud)