一、常用事件
1-1 click()
单击事件
$("p").click(function(){
$(this).hide();
});
1-2 dblclick()
双击事件
$("p").dblclick(function(){
$(this).hide();
});
1-3 mouseenter()
当鼠标指针穿过元素时,会发生 mouseenter 事件。
$("#p1").mouseenter(function(){
alert('您的鼠标移到了 id="p1" 的元素上!');
});
1-4 mouseleave()
当鼠标指针离开元素时,会发生 mouseleave 事件。
$("#p1").mouseleave(function(){
alert("再见,您的鼠标离开了该段落。");
});
1-5 hover()
hover()方法用于模拟光标悬停事件。
$("#p1").hover(
function(){
alert("你进入了 p1!");
},
function(){
alert("拜拜! 现在你离开了 p1!");
}
);
二、触发事件
$(selector).trigger('click'); //通过代码触发click事件(模拟点击)
<input type="button" value="第一个按钮" id="btn1"/>
<input type="button" value="第二个按钮" id="btn2"/>
$(function () {
$("#btn1").click(function () {
$(this).css("backgroundColor","red");
});
//点击第二个按钮调用第一个按钮的点击事件---触发第一个按钮的点击事件
$("#btn2").click(function () {
//触发事件
//$("#btn1").click();
//trigger()方法中需要写上触发事件的名字
$("#btn1").trigger("click");//触发事件
});
});
三、事件对象
jQuery事件对象其实就是js事件对象的一个封装,处理了兼容性。
// screenX和screenY 对应屏幕最左上角的值
// clientX和clientY 距离可视区左上角的位置(忽视滚动条)
// pageX和pageY 距离页面最顶部的左上角的位置(会计算滚动条的距离)
// event.keyCode 按下的键盘代码
// event.data 存储绑定事件时传递的附加数据
// event.stopPropagation() 阻止事件冒泡行为
// event.preventDefault() 阻止浏览器默认行为
// return false:既能阻止事件冒泡,又能阻止浏览器默认行为。
//阻止事件冒泡
<script type="text/javascript">
$(document).ready(function(){
$("#innerDiv").click(function(event){
alert("inner");
//阻止事件冒泡方式一:
//return false;
//阻止事件冒泡方式二:
event.stopPropagation();
});
$("#outerDiv").click(function(){
alert("outerDiv");
});
});
</script>
//阻止默认事件
$(function(){
//href 就是a标签的默认行为,现在想弹出提示框后阻止默认行为
$("a").click(function(event){
alert("aaa");
//阻止默认行为方式1:
//return false;
//阻止默认行为方式2:
event.preventDefault();
});
});
四、jQuery的data方法
jQuery从1.2.3开始提供了data/removeData方法用来存储/删除数据。
##1.基本使用:
$("div").data("key","value");
$("div").data("key");
$("div").removeData("key");
##2.原理:
jQuery的data方法并不是将数据直接放到当前的jQuery对象或者dom对象上的,而是通过jQuery.cache对象来缓存的数据。
具体上来说:
1.先给dom对象新增一个jquery.expando属性,这个属性的值为id(id是从1开始递增的)
2.而id又作为jQuery.cache的属性(key)。这样dom对象就与jQuery.cache建立了联系。
五、案例
5-1 替换a标签的默认提示
<script type="text/javascript">
$(function(){
//替换提示1 提示2 默认的提示文字
$(".mytooltip").mouseover(function(event){
//获取绑定的数据
var title = $(this).data("mytitle");
//如果第一次移到标签上面
if(!title){
//获取title属性值
title = $(this).attr("title");
//移除默认的提示
$(this).removeAttr("title");
//缓存数据
$(this).data("mytitle",title);
}
//创建提示的div
var $new = $("<div id='tooltip'>XXX</div>");
$new.html(title);
//设置位置
//$new.offset({"left":0,"top":0});
$new.offset({"left":event.pageX+5,"top":event.pageY-20});
//追加到body并显示
$new.appendTo("body").show();
}).mouseout(function(){
$("#tooltip").remove();
}).mousemove(function(event){
$("#tooltip").offset({"left":event.pageX+5,"top":event.pageY-20});
});
});
</script>
5-2 图片提示
$(function(){
var x = 10;
var y = 20;
var href;
$("a[class=tooltip]").mouseover(function(e){
//1 获取对应标签的自带提示
//var title = $("a[class=tooltip]").attr("title");
//this代表的是DOM对象(页面中的元素)
href = this.href;
//删除自带提示
this.href = "";
//2 创建标签用于自定义提示
var $div = $("<div id='tooltip'><img src='"+href+"'></img></div>");
//3 将自定义提示的标签,添加到body标签下
$("body").append($div);
//4 如何调整显示位置(相对鼠标的坐标值:e.pageX和e.pageY)
$("#tooltip").css({
"top" : e.pageY + y + "px",
"left" : e.pageX + x + "px"
}).show(1000);
}).mouseout(function(){
this.href = href;
$("#tooltip").remove();
}).mousemove(function(e){
$("#tooltip").css({
"top" : e.pageY + y + "px",
"left" : e.pageX + x + "px"
});
});
});