JQ8 基础事件

绑定事件

jQuery 通过.bind()方法来为元素绑定这些事件。可以传递三个参数:bind(type, [data], fn),type 表示一个或多个类型的事件名字符串;[data]是可选的,作为event.data 属性值传递一个额外的数据,这个数据是一个字符串、一个数字、一个数组或一个对象;fn 表示绑定到指定元素的处理函数。

$('input').bind('click', function () {//点击按钮后执行匿名函数

                 alert('弹窗!');

});

$('input').bind('click', 123, function (e) {//[data]额外的数据为数字

                  alert(e.data);

});

$('input').bind('click', 'abc', function (e) {//[data]额外的数据为字符串

                  alert(e.data);

});

$('input').bind('click', [1,2,3,'a','b'], function (e) {//[data]额外的数据为数组

                 alert(e.data[3]);

});

$('input').bind('click', {user : 'Li', age : 100}, function (e) {//[data]额外的数据为对象

                 alert(e.data.age);

});

 

$('input').bind('click', fn);//执行普通函数式无须圆括号

function fn() {

                alert('处理函数!')

}

//同时绑定多个事件

$('input').bind('mouseout mouseover', function () { //移入和移出分别执行一次

  $('div').html(function (index, value) {

     return value + '1';

   });

});

//通过对象键值对绑定多个参数

$('input').bind({ //传递一个对象

  'mouseout' : function () { //事件名的引号可以省略

    alert('移出');

   },

  'mouseover' : function () {

    alert('移入');

   }

});

//使用unbind 删除绑定的事件

$('input').unbind(); //删除所有当前元素的事件

//使用unbind 参数删除指定类型事件

$('input').unbind('click'); //删除当前元素的click 事件

//使用unbind 参数删除指定处理函数的事件

function fn1() {

    alert('点击1');

}

function fn2() {

    alert('点击2');

}

$('input').bind('click', fn1);

$('input').bind('click', fn2);

$('input').unbind('click', fn1); //只删除fn1 处理函数的事件

                                                                      简写事件

方法名 触发条件 描述
click(fn)  鼠标 触发每一个匹配元素的click(单击)事件
dblclick(fn) 鼠标 触发每一个匹配元素的dblclick(双击)事件
mousedown(fn) 鼠标 触发每一个匹配元素的mousedown(点击后)事件
mouseup(fn) 鼠标 触发每一个匹配元素的mouseup(点击弹起)事件
mouseover(fn) 鼠标 触发每一个匹配元素的mouseover(鼠标移入)事件mouseout(fn)
mouseout(fn) 鼠标 触发每一个匹配元素的mouseout(鼠标移出)事件
mousemove(fn)  鼠标 触发每一个匹配元素的mousemove(鼠标移动)事件
mouseenter(fn)  鼠标 触发每一个匹配元素的mouseenter(鼠标穿过)事件
mouseleave(fn)  鼠标 触发每一个匹配元素的mouseleave(鼠标穿出)事件
keydown(fn)  键盘 触发每一个匹配元素的keydown(键盘按下)事件
keyup(fn)  键盘 触发每一个匹配元素的keyup(键盘按下弹起)事件
keypress(fn)  键盘 触发每一个匹配元素的keypress(键盘按下)事件
unload(fn)  文档 当卸载本页面时绑定一个要执行的函数
resize(fn)  文档 触发每一个匹配元素的resize(文档改变大小)事件
scroll(fn)  文档 触发每一个匹配元素的scroll(滚动条拖动)事件
focus(fn)  表单 触发每一个匹配元素的focus(焦点激活)事件
blur(fn) 表单 触发每一个匹配元素的blur(焦点丢失)事件
focusin(fn)  表单 触发每一个匹配元素的focusin(焦点激活)事件
select(fn)  表单 触发每一个匹配元素的select(文本选定)事件
change(fn)  表单 触发每一个匹配元素的change(值改变)事件
submit(fn)  表单 触发每一个匹配元素的submit(表单提交)事件

注意:这里封装的大部分方法都比较好理解,重点几个需要注意区分的简写方法。

.mouseover()和.mouseout()表示鼠标移入和移出的时候触发。那么jQuery 还封装了另外一组:.mouseenter()和.mouseleave()表示鼠标穿过和穿出的时候触发。那么这两组本质上有什么区别呢?是:.mouseenter()和.mouseleave()这组穿过子元素不会触发,而.mouseover()和.mouseout()则会触发。

//HTML 页面设置

<div style="width:200px;height:200px;background:green;">

    <p style="width:100px;height:100px;background:red;"></p>

</div>

<strong></strong>

//mouseover 移入

$('div').mouseover(function () { //移入div 会触发,移入p 再触发

    $('strong').html(function (index, value) {

        return value+'1';

     });

});

//mouseenter 穿过

$('div').mouseenter(function () { //穿过div 或者p

    $('strong').html(function (index, value) { //在这个区域只触发一次

        return value+'1';

     });

});

//mouseout 移出

$('div').mouseout(function () { //移出p 会触发,移出div 再触发

    $('strong').html(function (index, value) {

       return value+'1';

     });

});

//mouseleave 穿出

$('div').mouseleave(function () { //移出整个div 区域触发一次

     $('strong').html(function (index, value) {

        return value+'1';

      });

});

.keydown()、.keyup()返回的是键码(键盘上的任意键),而

.keypress() 返回的是字符编码(键盘上可以输出的字符的键)。

$('input').keydown(function (e) {

      alert(e.keyCode); //按下a 返回65

});

//charCode 属性只有在发生keypress 事件才包含值,而且这个值是按下的那个键所代表字符的ASCII 编码

$('input').keypress(function (e) {

       alert(e.charCode); //按下a 返回97

       alert(String.fromCharCode(e.charCode));

});

PS:可以使用String.fromCharCode()将ASCII 编码转换成实际的字符。

.focus()和.blur()分别表示光标激活和丢失,事件触发时机是当前元素。而.focusin()和.focusout()也表示光标激活和丢失,但事件触发时机可以是子元素。

<div style="width:200px;height:200px;background:red;">

     <input type="text" value="" />

</div>

<strong></strong>

//focus 光标激活

$('input').focus(function () { //当前元素触发

    $('strong').html('123');

});

//focusin 光标激活

$('div').focusin(function () { //绑定的是div 元素,子类input 触发

    $('strong').html('123');

});

注意:.blur()和.focusout()表示光标丢失,和激活类似,一个必须当前元素触发,一个可以是子元素触发。