jquery基础(三)——事件篇

1.1、jQuery鼠标事件之click与dbclick事件

click方法用于监听用户单击操作,另一个方法是dbclick方法用于监听用户双击操作

$("#test").click(function(){
     $("ele").click()  //手动指定触发事件 
});

1.2、jQuery鼠标事件之mousedown与mouseup事件

mousedown的快捷方法可以监听用户鼠标按下的操作,与其对应的还有一个方法mouseup快捷方法可以监听用户鼠标弹起的操作

$("#test").mousedown(function(){
     $("ele").mousedown()  //手动指定触发事件 
});

1.3、jQuery鼠标事件之mousemove事件

mousemove的快捷方法可以监听用户移动

$("#test").click(function(){
     $("ele").mousemove()  //指定触发事件 
});

1.4、mouseover与mouseout事件

<div id="test">点击触发<div>
$("ele").mouseover(function(){
    alert('触发指定事件')
})
$("#test").click(function(){
     $("ele").mouseover()  //指定触发事件 
});

1.5、mouseenter与mouseleave事件

mouseenter和mouseleave的快捷方法可以监听用户移动到内部的操作

var i = 0;
        $(".aaron1 p").mouseover(function(e) {
            $(".aaron1 a:first").html('mouseover事件触发次数:' + (++i))
        })
mouseover就像是针,一层层元素就像是纸,最外层没有mouseover的时候就一直向下扎,直到扎穿了为止。
mouseenter就像时刷子,刷上哪儿是哪儿

1.6、hover事件

  • handlerIn(eventObject):当鼠标指针进入元素时触发执行的事件函数
  • handlerOut(eventObject):当鼠标指针离开元素时触发执行的事件函数

$(selector).hover(handlerIn, handlerOut)

1.7、focusin事件

捕获动作的时候,jQuery提供了一个focusin事件

<div id="test">点击触发<div>
$("ele").focusin(function(){
    alert('触发指定事件')
})
$("#test").mouseup(function(){
     $("ele").focusin()  //指定触发事件 
});

1.8、focusout事件

当一个元素,或者其内部任何一个元素失去焦点的时候,比如input元素,用户在点击失去焦的时候,如果开发者需要捕获这个动作

<div id="test">点击触发<div>
$("ele").focusout(function(){
    alert('触发指定事件')
})
$("#test").mouseup(function(){
     $("ele").focusout()  //指定触发事件 
});
单处理事件focusin事件与focusout事件,同样用于处理表单焦点的事件还有blur与focus事件

2.1、blur与focus事件

事件focusin事件与focusout事件,同样用于处理表单焦点的事件还有blur与focus事件


2.2、change事件

<input>元素,<textarea>和<select>元素的值都是可以发生改变的,开发者可以通过change事件去监听这些改变的动作

 //监听input值的改变
    $('.target1').change(function(e) {
        $("#result").html(e.target.value)
    });

    //监听select:
    $(".target2").change(function(e) {
        $("#result").html(e.target.value)
    })

     //监听textarea:
    $(".target3").change(function(e) {
        $("#result").html(e.target.value)
    })

2.3、

select事件

当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件。
这个函数会调用执行绑定到select事件的所有函数,包括浏览器的默认行为。可以通过在某个绑定的函数中返回false来防止触发浏览器的默认行为
//监听input元素中value的选中
    //触发元素的select事件
    $("input").select(function(e){
        alert(e.target.value)
    })
    $("#bt1").click(function(){
        $("input").select();
    })


    //监听textarea元素中value的选中
    $('textarea').select(function(e) {
        alert(e.target.value);
    });

2.4、submit事件

提交表单是一个最常见的业务需求,比如用户注册,一些信息的输入都是需要表单的提交。同样的有时候开发者需要在表单提交的时候过滤一些的数据、做一些必要的操作(例如:验证表单输入的正确性,如果错误就阻止提交,从新输入)此时可以通过submit事件,监听下提交表单的这个动作

  //回车键或者点击提交表单
    $('#target1').submit(function(e) {
        alert('捕获提交表达动作,不阻止页面跳转')
    });
    //回车键或者点击提交表单,禁止浏览器默认跳转:
    $('#target2').submit(function() {
        alert('捕获提交表达动作,阻止页面跳转')
        return false;
    });


3.1、keydown()与keyup()事件

键盘按下与松手,针对这样的2种动作,jQuery分别提供了对应keydown与keyup方法来监听

 //监听键盘按键
    //获取输入的值
    $('.target1').keydown(function(e) {
        $("em:first").text(e.target.value)
    });

    //监听键盘按键
    //获取输入的值
    $('.target2').keyup(function(e) {
        $("em:last").text(e.target.value)
    });

操作:按下数字键盘的“5”不放
现象:上面的框(keydown)会同步显示输入的值!
下面的框(keyup)当松手之后才会显示输入的值!

3.2、keypress()事件

KeyPress主要用来接收字母、数字等ANSI字符,而 KeyDown 和 KeyUP 事件过程可以处理任何不被 KeyPress 识别的击键。诸如:功能键(F1-F12)、编辑键、定位键以及任何这些键和键盘换档键的组合等

    //监听键盘按键
    //获取输入的值
    $('.target1').keypress(function(e) {
        $("em").text(e.target.value)
    });

4.1、on()的多事件绑定

$("#elem").click(function(){})  //快捷方式
$("#elem").on('click',function(){}) //on方式

0n的高级用法:

触发事件

$("div").on("click","p",fn)

/给body绑定一个click事件
    //没有直接a元素绑定点击事件
    //通过委托机制,点击a元素的时候,事件触发
    $('body').on('click', 'a', function(e) {
       alert(e.target.textContent)
    })

4.2、卸载事件off()方法

  • 通过.on()绑定的事件处理程序
  • 通过off() 方法移除该绑定

绑定2个事件

$("elem").on("mousedown mouseup",fn)

删除一个事件

$("elem").off("mousedown")

删除所有事件

$("elem").off("mousedown mouseup")


快捷方式删除所有事件,这里不需要传递事件名了,节点上绑定的所有事件讲全部销毁

$("elem").off()


jQuery事件对象的作用

事件对象是用来记录一些事件发生时的相关信息的对象。事件对象只有事件发生时才会产生,并且只能是事件处理函数内部访问,在所有事件处理函数运行结束后,事件对象就被销毁


event是实际的触发事件的元素,而this是给哪个元素绑定了事件,结合这个例子 event是li,this是ul

不了解什么是冒泡事件的要先去学学"DOM事件揭秘"这个课程,学完就清楚了. 传送门:http://www.imooc.com/learn/138

jQuery自定义事件之trigger事件

$('#elem').trigger('click');

简单来讲就是:根据绑定到匹配元素的给定的事件类型执行所有的处理程序和行为
  • 自定义事件可以传递参数

triggerHandler事件

trigger事件是具有触发原生与自定义能力的,但是存在一个不可避免的问题: 事件对象event无法完美的实现,毕竟一个是浏览器给的,一个是自己模拟的。尽管 .trigger() 模拟事件对象,但是它并没有完美的复制自然发生的事件,若要触发通过 jQuery 绑定的事件处理函数,而不触发原生的事件,使用.triggerHandler() 来代替

trigger会触发浏览器默认行为,比如光标聚集,triggerHandler则不会,它只会显示文本,触发focus事件函数

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
        .left div,
        .right div {
            width: 500px;
            height: 50px;
            padding: 5px;
            margin: 5px;
            float: left;
            border: 1px solid #ccc;
        }

        .left div {
            background: #bbffaa;
        }

        .right div {
            background: yellow;
        }
    </style>
    <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script>
</head>

<body>
<h2>自定义事件triggerHandler</h2>
<div class="left">
    <div id="accident">
        <a>triggerHandler事件</a>
        <input type="text">
    </div>
    <button>事件冒泡,触发浏览器默认聚焦行为</button><br><br>
    <button>不会冒泡,不触发浏览器默认聚焦行为</button>
</div>
<script type="text/javascript">

    //给input绑定一个聚焦事件
    $("input").on("focus",function(event,title) {
        $(this).val(title)
    });

    $("#accident").on("click",function() {
        alert("trigger触发的事件会在 DOM 树中向上冒泡");
    });
    //trigger触发focus
    $("button:first").click(function() {
        $("a").trigger("click");
        $("input").trigger("focus");
    });

    //triggerHandler触发focus
    $("button:last").click(function() {
        $("a").triggerHandler("click");
        $("input").triggerHandler("focus","没有触发默认聚焦事件");
    });



</script>
</body>

</html>

待整理。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值