欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。由于本站位于香港虚拟主机,故速度比较慢。

文摘  jQuery常用事件说明及汇总

JQuery 网络 192 0评论

jQuery提供了许多的事件处理函数,下面对其总结一下,梳理一下知识点,便于记忆和使用。


一、鼠标事件


1. click():鼠标单击事件

$div = $("div")
$div.click(data,function (event) { //点击盒子变蓝
    $(this).css({
        "background": "blue",
    }); 
    console.log(event);
})

参数function:匿名函数有且只有一个默认的参数event,event输出事件相关的信息;不允许有其他的参数,可以不写。

参数data:有时候需要传递额外的数据给函数,data可以是一个数组,不需要可以省略。

扩展:

//event参数可以获取事件的各种属性,有几个常用
event.target:  获取触发事件的元素
$div.click(function (event) {
            $(event.target).css({
                    "background": "blue",
                });
    })event.data: 获取事件传入的参数数据。

event.pageX: 获取鼠标光标点击距离文档左边left的距离;

event.pageY: 获取鼠标光标点击距离文档上边top的距离;

event.offsetX: 获取鼠标光标点击距离元素左边left的距离;

event.offssetY: 获取鼠标光标点击距离元素上边top的距离;

event.screenX: 获取鼠标光标点击距离屏幕left的距离;

event.screenY: 获取鼠标光标点击距离屏幕top的距离;


2. dblclick():鼠标双击事件

$div = $("div")
$div.dblclick()(function (event) { //双击盒子变蓝
    $(this).css({
        "background": "blue",
    });               
})

参数和click的用法完全一样,event同样可以获取众多的属性。


3. 鼠标进入和离开(进入子元素也触发)

· mouseover():进入

· mouseout():离开

$div = $("div")
$div.mouseover(function (event) { 
    $(this).css({
        "background": "blue",
    });               
})

$div.mouseout(function (event) { 
    $(this).css({
        "background": "blue",
    });               
})

参数同上,绑定后鼠标进入元素的子元素会再次触发。


4. 鼠标进入和离开(进入子元素不触发)

· mouseenter() 鼠标进入

· mouseleave() 鼠标离开

$div = $("div")
$div.mouseenter(function (event) { 
    $(this).css({
        "background": "blue",
    });               
})

$div.mouseleave(function (event) { 
    $(this).css({
        "background": "blue",
    });               
})

参数同上,绑定后鼠标进入和离开子元素不会再次触发。


5. hover():同时为mouseenter和mouseleave事件指定处理函数

$div = $("div")
// 鼠标进入和移出事件
    $div.hover(function (event) {
        $div.css({
            "background": "blue",
        })
    },function (event) {
        $div.css({
            "background": "red", 
        });
    })

hover可以同时加入两个function,第一个是鼠标进入(悬停)触发,第二个是移出(离开)触发。

前面不可以添加data参数,否则报错。


6. 鼠标按下和松开

· mouseup() 松开鼠标

· mousedown() 按下鼠标

$div = $("div")
$div.mousedown(function (event) {
    $(this).css({
        "background": "blue",
    });
    console.log(event);
})

$div.mouseup(function (event) {
    $(this).css({
        "background": "blue",
    });
    console.log(event);
})

参数同click,和点击事件click不同的是,click在鼠标点击(包括按下和松开)后才触发事件,这里是按下或松开就会触发。


7. mousemove() 鼠标在元素内部移动

同法和参数同上。


二、键盘事件


1.keypress():按下键盘(指的是按下)

$(window).keypress([20],function (event) {
        $div.css({
            "background": "blue",
        });
    console.log(event.which);            
 })

参数:同鼠标事件,第一个参数传递数据,function默认参数event值按下键盘事件。

键盘事件需要绑定可获得焦点的元素,如:input,body,html,一般绑定窗口:window。

如果需要具体判断按下了那个按键,使用event.which,返回键盘字母的ascii码。

注意:如果按下不放开,事件会连续触发。


2.按下和松开

· keydown() 按下键盘

· keyup() 松开键盘

$(window).keydown([20],function (event) {
    $div.css({
        "background": "blue",
    });
    console.log(event);
})

$(window).keyup([20],function (event) {
    $div.css({
        "background": "blue",
    });
    console.log(event);
})

参数同上。


在jQuery中keydown,keypress,keyup事件是按一定的顺序执行的。

代码如下:

 $('input').keyup(function(){
          console.log('keyup');
          });
        $('input').keydown(function(){
          console.log('keydown');
          });
        $('input').keypress(function(){
          console.log('keypress');
});

执行结果是:keydown ,keypress ,keyup

在这里不使用alert是因为在alert的时候会阻止一些事件的发生,在这里是会阻止keyup事件的发生,要想实验这端代码,可以在Firefox下进行,需要在浏览器上装上firebug这个插件。放心安装,因为Firefox是一款开源的浏览器。相信开源软件。


注意:keydown和keypress方法区别在于,keypress事件不会触发所有的按键,比如 ALT、CTRL、SHIFT、ESC等。

事件区别详见:http://ittxx.cn/view/30 


三、焦点事件


元素获取和失去焦点

· blur() 元素失去焦点

· focus() 元素获得焦点(当通过鼠标点击选中元素或通过 tab 键定位到元素时,该元素就会获得焦点。)

$put = $("input");
$put.focus():    //元素自动获取焦点
$put.focus(function (event) {
    console.log(event);
        $div.css({
        "background": "blue",
            })
})//获取焦点后触发事件

$put.blur(function (event) {
    console.log(event);
        $div.css({
        "background": "blue",
            })
})//失去焦点后触发事件

参数同click;

焦点事件一般使用在input标签上,其他的标签一般得不到焦点。

实例:

jQuery中的blur()失去焦点事件,我们可以用来检查用户在input输入框中输入的内容是否合法,比如以下代码,如果用户输入的内容少于五个字符就给出提示

代码如下:

<input type="text" name="" id="mochu">
<script>
    $('#mochu').blur(function(){
        if($(this).val().length < 5){
            alert('字数太少了,多输入几个吧');
        }
    });
</script>


四、表单事件


1.submit(): 用户递交表单

$(".form").submit(function (event) {
    alert("提交事件");
    console.log(event);
    //阻止系统默认事件
    event.defaultPrevented();
    return false;
})

submit事件绑定在form表单上,点击提交按钮时触发该事件,可以对系统默认的提交进行拦截。

event.defaultPrevented();//阻止系统提交数据


2.change():当输入框的值改变的时候失去焦点触发事件 :仅适用于input , textarea select。

$(function(){
     $('#target').change(function(){
           console.log($(this).val());
      })
})

当表单元素如单选框、多选框、文本框等值发生变化时触发。


3.select():当输入框中的值被选中的时候触发该事件 :仅适用于 input(type = text) 和textarea

$(function(){
      $('#target').select(function(){
           console.log("选中");
      })
})


五、其他事件


1.ready():DOM加载完成后执行

这个事件用来防止js报错,每次引入js都要使用,不在赘述。

详见:http://ittxx.cn/view/32 


2.resize():浏览器窗口的大小发生改变触发事件

$(window).resize(function () {
    console.log($(window).width());
   })

参数同click,这个事件需要绑定在window上才会生效,用于监控窗口的变化。

要删除通过resize()绑定的事件,请使用unbind()函数。


3.scroll():滚动条的位置发生变化

当用户滚动指定的元素时,会发生 scroll 事件。

scroll 事件适用于所有可滚动的元素和 window 对象(浏览器窗口)。

scroll() 方法触发 scroll 事件,或规定当发生 scroll 事件时运行的函数。


首先介绍一下(document).height()与$(window).height()的区别:

$(document).height() 是获取整个页面的高度

$(window).height() 是获取当前 也就是你浏览器所能看到的页面的那部分的高度 这个大小在你缩放浏览器窗口大小时 会改变 与document是不一样的


scrollTop()和scrollLeft()的使用:

$(document).scrollTop() 获取垂直滚动的距离 即当前滚动的地方的窗口顶端到整个页面顶端的距离

$(document).scrollLeft() 这是获取水平滚动条的距离


要获取顶端 只需要获取到scrollTop()==0的时候 就是顶端了

要获取底端 只要获取scrollTop()>=$(document).height()-$(window).height() 就可以知道已经滚动到底端了


下面介绍一个scroll事件实现监控滚动条分页简单示例,使用ajax加载,代码如下:

$(document).ready(function () {  
$(window).scroll(function () {  
//$(window).scrollTop()这个方法是当前滚动条滚动的距离  
//$(window).height()获取当前窗体的高度  
//$(document).height()获取当前文档的高度  
var bot = 50; //bot是底部距离的高度  
if ((bot + $(window).scrollTop()) >= ($(document).height() - $(window).height())) {  
//当底部基本距离+滚动的高度〉=文档的高度-窗体的高度时;  
//我们需要去异步加载数据了  
$.getJSON("url", { page: "2" }, function (str) { alert(str); });  
}  
});  
});


4.unload() :用户离开页面

$(document).unload(function () {
    $div.css({
        "background": "blue",
    });
    console.log("leave");
})


六、通用的绑定事件和解绑方法


1.bind():绑定

$(function(){
    $('div').bind('mouseover click', function(event) {
        alert($(this).html());
    });
});

   

参数:第一个参数为需要绑定的事件的名字,可以绑定多个事件,之间用空格隔开;第二个参数是处理函数。


2.unbind()解绑

$(function(){
    $('#div1').bind('mouseover click', function(event) {
        // $(this).unbind();解绑所有事件
        $(this).unbind('mouseover');解绑指定事件
    });
});

参数同bind。


3.on()绑定和委托都可用的方法

$("div").on(event,childSelector,data,function);    //四个参数

$(function(){
    $('div').on('mouseover click', function(event) {
        $(this).css({
        "background": "blue",
        });
    });
});

参数:

event,需要绑定的事件,多个事件用空格隔开;

function:事件的处理方法。

childSelector:选择需要委托的元素,用于委托事件。

data:额外的传参。


4.off()解绑

$(function(){
    $('#div1').on('mouseover click', function(event) {
        // $(this).off();解绑所有事件
        $(this).off('mouseover');解绑指定事件
    });
});


5.one()绑定一次自动解绑

如果需要触发事件一次后就自动失效,比如:按钮点击一次后 就失效使用这个方法。

$(function(){
    $('div').one('mouseover click', function(event) {
        $(this).css({
        "background": "blue",
        });
    });
});


注意:当一次性绑定多个事件时,多个事件相互是独立的,即如果有一个事件被触发,那么这个事件解绑,对另外没有被触发的事件没有影响。


七、自定义和主动触发事件


说明:对于系统没有提供的事件,可以自己定义并主动触发。

$div.bind("abc",function () {
    $(this).css({
        "background": "blue",
    });
    
})
$div.trigger("abc");

trigger():触发事件的方法;这种方式类似协程。


八、事件的两大特征运用


1. 事件的冒泡

定义:一个元素标签如div,在上面触发某种事件,如单击;如果div上没有定义单击事件或者定义了单击事件,但返回值不是false,即没有阻止冒泡;那么事件会向父级传递,每一个定义了单击事件的父级都会被触发事件,直到到达document或window。

注意:冒泡是事件的固有属性(自定义不适用),适合所有的系统事件。

作用: 允许多个事件被击中到父级处理,减少绑定次数,提高性能。

$(function(){
    var $box1 = $('.father');
    var $box2 = $('.son');
    var $box3 = $('.grandson');
    $box1.click(function() {
        alert('father');
    });
    $box2.click(function() {
        alert('son');
    });
    $box3.click(function(event) {
        alert('grandson');
       // event.stopPropagation();阻止冒泡
    });
    $(document).click(function(event) {
        alert('grandfather');
    });
})
......
<div class="father">
    <div class="son">
        <div class="grandson"></div>
    </div>
</div>

说明:上面代码界面,单击“grandson”的div,所有事件都会被触发;

如果要阻止事件冒泡,使用stopPropagation();

扩展:合并阻止操作

event.stopPropagation();    //阻止冒泡

event.preventDefault();    //阻止默认行为

// 合并写法:

return false;

实际开发中,一般把阻止冒泡和阻止默认行为合并起来写。


2. 事件委托

定义:利用冒泡原理,将要处理相同事件的子元素的事件委托给父级,从而极大减少事件绑定的次数,提高性能。


1)委托事件:

· delegate():

$(function(){
    $list = $('list');
    $list.delegate('li', 'click', function(event) {
        $(this).css({background:'red'});
    });
})//给列表下面的每个li元素的事件委托给list列表。

参数:第一个参数是需要委托的元素,采用css选择器的写法,默认从一级子元素开始;第二个参数时要委托的事件,可以是多个,之间用空格隔开,第三个参数是处理函数。

event指触发事件的那个对象。


· on():

$(function(){
    $list = $('list');
    $list.on('click', 'li', function(event) {
        $(this).css({background:'red'});
    });
})//给列表下面的每个li元素的事件委托给list列表。

参数:

第一个是需要委托的事件,多个用空格隔开;

第二个是需要委托事件的子元素;

第三个是触发处理函数。


· one():委托触发一次自动取消委托

$(function(){
    $('div').one('click',"li" function(event) {
        $(this).css({
        "background": "blue",
        });
    });
});

说明:参数用法和on事件一样。


2)取消委托

· undelegate():

$list.undelegate();  //选择器找到委托对象取消委托

使用undelegate()方法取消委托,所有的子元素的委托都将被取消。


· off():

$list.off("click","li");


总结:

· 每一个事件相当于一个协程,异步操作;

· 所有的事件并列处理,事件不要嵌套事件,否则会出现重复绑定。

· 可以进行事件委托尽量使用委托,减少系统资源消耗。


参考网址:

https://www.runoob.com/jquery/jquery-events.html 

https://blog.csdn.net/QQ80583600/article/details/53946320 

https://blog.csdn.net/tanga842428/article/details/52432026

https://blog.csdn.net/mmzzzzzz/article/details/81568040

https://www.cnblogs.com/oybb/p/7780121.html 


原文地址:https://www.cnblogs.com/cwp-bg/p/7668940.html

转载请注明: ITTXX.CN--分享互联网 » jQuery常用事件说明及汇总

最后更新:2019-08-09 18:29:00

赞 (1) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽