delegate与live的使用方法:
<script>
$("body").delegate("p", "click", function(){
$(this).after("<p>Another paragraph!</p>");
});
$("p").live("click", function(){
$(this).after("<p>Another paragraph!</p>");
});
</script>
作用是给动态添加的元素添加事件。
实现方法:
document.body.addEventListener('click', function(e) {
//获取event对象
//标准DOM方法事件处理函数第一个参数是event对象
//IE可以使用全局变量window.event
var evt = window.event ? window.event : e;
//获取触发事件的原始事件源
//标准DOM方法是用target获取当前事件源
//IE使用evt.srcElement获取事件源
var target = evt.target || evt.srcElement;
//获取当前正在处理的事件源
//标准DOM方法是用currentTarget获取当前事件源
//IE中的this指向当前处理的事件源
var currentTarget = e ? e.currentTarget : this;
//因为事件监听是绑定在body的 所以currentTarget(this)指向body 而target指向当前btn
if (target.className === "btn") {
//给target绑定事件处理程序
}
})
效果即可如delegate和live。