jQuery中事件绑定
bind():是直接绑定在元素上
$("p").bind("click mouseenter", function () {
alert("我执行了");
});
$("p").bind("click", function () {
alert("我执行了");
});
live():则是通过冒泡的方式来绑定到元素上的。更适合列表类型的,绑定到document DOM节点上。和.bind()的优势是支持动态数据。
$('p').live('click', function () {
$(this).clone().appendTo('#panel');
});
delegate():则是更精确的小范围使用事件代理,性能优于.live()
$("div").delegate("p", "click", function () {
alert("我执行了委托事件");
});
on():则是最新的1.9版本整合了之前的三种方式的新事件绑定机制
$("div").on("click", "p", function () {
alert("我注册的是委托事件");
console.log(this);
});
1. delegate() 和 on() 的区别:两者区别是seleter和events顺序不同
2. 一个元素自己注册了事件,而且还注册了委托事件,两个事件相同,则先执行委托事件,再处理自己身上的事件
3.事件解绑: off(envent1,envent2…)
$("div").off("click mouseenter");
4.只解除委托事件
$("div").off("click","**");
5. 事件触发
$(function () {
$("#txt").focus(function () {
alert("我执行了");
});
$("#btn").click(function () {
$("#txt").focus(); // 该行代码就是来触发focus事件的
// $("#txt").trigger("focus"); 方法触发事件
// $("#txt").triggerHandler("focus") 方法触发事件
});
});
两种方法触发事件的区别:
trigger():会触发浏览器的默认行为
triggerHandler():不会触发浏览器默认行为