1、jQuery 元素相关的事件和方法
var $div = $("<div></div>");
$div.ready(function(){
console.log("DOM 加载完成时执行!");
});
var events = "click change blur";
$div.on(events,".red",data,function(){
console.log("执行 on 绑定事件" + events);
});
$div.on("click",function(){
console.log("执行 click 事件");
});
$div.on("click",{name:"Tom",age:15},function(){
console.log("执行传入了数据的 click 事件,参数附加给力 event.data 对象");
console.log("姓名 :"+event.data.name);
console.log("年龄 :"+event.data.age);
})
var jQueryApp = {
clickHandler:function(event){
console.log("执行函数 clickHandler");
console.log("查看事件传入的数据:");
console.log(event.data);
},
otherClickHandler:function(event,arg1,arg2){
console.log("执行带参数 arg1,arg2 的函数");
console.log("触发 click 事件的写法需要改变才能传入 arg1 和 arg2 :");
console.log("arg1 :");
console.log(arg1);
console.log("arg2 :");
console.log(arg2);
}
}
$div.off(events);
$div.bind("click",function(){
console.log("执行 bind 方法绑定的 click 事件处理函数");
});
$div.bind("click dbclick",function()){
console.log("执行 bind 方法绑定的 click 和 dbclick 的事件处理函数");
console.log("当前要么是单击事件要么是双击事件!");
});
$div.bind({
click:function(){
console.log("bind 方法的绑定事件的另一种写法");
},
mouseout:function(){
console.log("这是 bind 方法同时绑定多个事件类型和处理函数的写法");
},
eat:function(){
console.log("bind 方法绑定的事件不限于浏览器默认事件,可以是自定义的事件!");
}
});
$(".one").one("click",function(){
console.log("匹配 .one 选择器的元素只会执行一次 click 事件当前的处理程序,以后不再执行!");
});
$div.trigger("click",{ msg:"传递给 click 事件的数据" });
$("a").triggerHandler("click",{ msg:"triggerHandler方法触发事件时,浏览器的默认动作不会触发也不会产生事件冒泡" });
$div.unbind("click");
$div.unbind();
$div.bind("click",jQueryApp.clickHandler);
$div.bind("click",jQueryApp.otherClickHandler);
$div.nnbind("mouseout",jQueryApp.clickHandler);
$(".clickme").live("click",{msg:"一样可以传数据给 event 的data对象 "},function(){
console.log("除了当前匹配元素绑定了事件处理函数,以后符合的匹配元素该事件处理函数也对其有效!");
});
$(".clickme").die("click",jQueryApp.clickHandler);
$("div").delegate("button","click",function(){
$("p").slideToggle();
});
$("p").undelegate();
$("p").hover({
function(){
console.log("鼠标移到元素上触发的函数");
},
function(){
console.log("鼠标移出元素要触发的函数");
}
});
jQueryApp.toggleOne = function(){
console.log("toggle 第一个处理函数");
}
jQueryApp.toggleTwo = function(){
console.log("toggle 第二个处理函数");
}
$("div").toggle("slow",jQueryApp.toggleOne,jQueryApp.toggleTwo);
$(".input").blur(function(){
console.log("元素失去焦点时触发 blur 事件");
});
$("select .input").change(function(){
console.log("元素的值改变时触发 change 事件");
});
$("div").dbclick(function(){
console.log("元素的被双击时触发 dbclick 事件");
});
$(window).error(function(msg,url,line){
console.log("当元素遇到错误时触发 error 事件,");
jQuery.post("js_error_log.php", { msg: msg, url: url, line: line });
});
$("div").focus(function(){
console.log("元素获得焦点时触发 focus 事件");
});
$("div").focusin(function(){
console.log("当元获得焦点时触发 focusin 事件");
});
$("div").focusout(function(){
console.log("当元素失去焦点时触发 focusout 事件");
});
$("div").keydown(function(){
console.log("当键盘或按钮被按下时触发 keydown 事件,元素需要获得焦点");
});
$("div").keypress(function(){
console.log("当键盘或按钮被按下时触发 keypress 事件,且每插入一个字符触发一次");
});
$(document).keyup(function(){
console.log("当键盘按钮被松开时触发 keyup 事件");
});
$("div").mousedown(function(){
console.log("当鼠标指针移动到元素上方,并按下鼠标按键时触发 mousedown 事件");
});
$("div").mouseenter(function(){
console.log("当鼠标指针穿过元素时触发 mouseenter 事件。该事件大多数时候会与mouseleave 事件一起使用");
});
$("div").mouseleave(function(){
console.log("当鼠标指针离开元素时触发 mouseleave 事件");
});
$("div").mousemove(function(){
console.log("当鼠标指针在指定的元素中移动时触发 mousemove 事件");
});
$("div").mouseout(function(){
console.log("当鼠标指针从元素上移开时触发 mouseout 事件");
});
$("div").mouseup(function(){
console.log("当在元素上放松鼠标按钮时触发 mouseup 事件");
});
$(window).resize(function(){
console.log("当调整浏览器窗口的大小时");
});
$(window).scroll(function(){
console.log("当用户滚动指定的元素时,会发送 scroll 事件");
});
$("form").submit(function(){
console.log("表单函数提交时执行,只适用于表单元素");
});
$("textarea,input[type=text]").select(function(){
console.log("文本域或input元素文本被选中时触发 select 事件");
});
$(window).unload({name:"Peter"},function(){
console.log("当用户离开页面时触发 unload 事件");
return confirm(e.name + ",are you ready to go?");
});
2、jQuery 元素相关的事件对象 event
$("p").click({name:"张三"},function(e){
console.log(e.currentTarget === true);
console.log(e.data);
console.log(e.delegateTarget);
console.log(e.isDefautPrevented());
e.preventDefault();
console.log(e.IsImmediatePropagationStopped());
e.stopImmediatePropagation();
console.log(e.isStopPropagationStopped());
e.stopPropagation();
console.log("当事件被触发时此属性包含指定的命名空间");
console.log("pageX:" + event.pageX);
console.log("pageY:" + event.pageY);
console.log(event.relateTarget);
console.log(event.result);
console.log(event.timeStamp);
console.log(event.type);
console.log(event.witch);
console.log(String.fromCharCode(e.charCode));
});