03.Jquery语法中

一、jquery事件

事件函数列表:

blur() 元素失去焦点
focus() 元素获得焦点
change() 表单元素的值发生变化
click() 鼠标单击
dblclick() 鼠标双击
mouseover() 鼠标进入(进入子元素也触发)
mouseout() 鼠标离开(离开子元素也触发)
mouseenter() 鼠标进入(进入子元素不触发)
mouseleave() 鼠标离开(离开子元素不触发)
hover() 同时为mouseenter和mouseleave事件指定处理函数
mouseup() 松开鼠标
mousedown() 按下鼠标
mousemove() 鼠标在元素内部移动
keydown() 按下键盘
keypress() 按下键盘
keyup() 松开键盘
load() 元素加载完毕
ready() DOM加载完成
resize() 浏览器窗口的大小发生改变
scroll() 滚动条的位置发生变化
select() 用户选中文本框中的内容
submit() 用户递交表单
toggle() 根据鼠标点击的次数,依次运行多个函数
unload() 用户离开页面

绑定事件的其他方式

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

取消绑定事件

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

        // $(this).unbind();
        $(this).unbind('mouseover');

    });
});

关于鼠标进入和进出看一个demo


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

            //第一种:进入子元素时会触发
            // $('#div1').mouseover(function(){
            //  $(this).animate({marginTop:50});
            // });

            // $('#div1').mouseout(function(){
            //  $(this).animate({marginTop:100});
            // });




            //stop的使用,鼠标不断地进入和进出,事件会在一个队列里,为了防止太多事件,可使用stop停止所有事件
            //第二种:进入子元素时不会触发

            // $('#div1').mouseenter(function(){
            //  $(this).stop().animate({marginTop:50});
            // });

            // $('#div1').mouseleave(function(){
            //  $(this).stop().animate({marginTop:100});
            // });


            /* 通过hover简写    */
            $('#div1').hover(function(){
                $(this).stop().animate({marginTop:50});
            },function(){
                $(this).stop().animate({marginTop:100});
            });


        })

    script>
    <style type="text/css">
        .box{
            width:200px;
            height:200px;
            background-color:gold;
            margin:100px auto 0;
        }

        .son{
            width:100px;
            height:100px;
            background-color:green;
        }

    style>
head>
<body>
    <div id="div1" class="box">
        <div class="son">div>
    div>
body>
html>

03.Jquery语法中_第1张图片

第一种,当从黄色进入绿色,移出事件仍然会触发。
第二种,当从黄色进入绿色,移出事件不会触发。

input框事件


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

            $('#txt01').focus();

            // 获取焦点的时候-有光标的时候
            // $('#txt01').focus(function() {
            //  alert('foucus');
            // });

            // 失去焦点-光标离开的时候
            // $('#txt01').blur(function() {
            //  //alert('blur');
            // });


            /*
            输入框内的内容发生变化,失去焦点后触发
            */

            // $('#txt01').change(function() {
            //  alert('change');
            // });



            //按键松开后就触发

            /*

            $('#txt01').keyup(function() {
                alert('keyup');
            });

            */

        })

    script>
head>
<body>
    <input type="text" name="" id="txt01">
body>
html>

其他事件:


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        // 窗口改变尺寸的时候
        $(window).resize(function() {

            console.log('2');

        });


    script>
head>
<body>
    <div id="div1">div>
body>
html>

绑定事件:


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

            /*$('#btn').click(function(event) {
                 Act on the event 
            });
            */
            //鼠标第一次移上去后触发取消绑定鼠标移动事件,下一次鼠标移上去就不再触发了
            $('#btn').bind('click mouseover',function(){
                alert('hello!');

                $(this).unbind('mouseover');
            })

        })

    script>
head>
<body>
    <input type="button" name="" value="按钮" id="btn">
body>
html>

二、主动触发与自定义事件

主动触发

可使用jquery对象上的trigger方法来触发对象上绑定的事件。

自定义事件

除了系统事件外,可以通过bind方法自定义事件,然后用tiggle方法触发这些事件。

//给element绑定hello事件
element.bind("hello",function(){
    alert("hello world!");
});

//触发hello事件
element.trigger("hello");

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义事件title>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

            $('#btn').bind('hello',function(){

                alert('hello!');

            });

            $('#btn').bind('click',function(){

                alert('click');

            });

            $('#btn2').click(function() {
                $('#btn').trigger('hello');
                $('#btn').trigger('click');
            });

        })

    script>
head>
<body>
    <input type="button" name="" value="按钮" id="btn">
    <input type="button" name="" value="按钮2" id="btn2">
body>
html>

三、事件冒泡

什么是事件冒泡

在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)

事件冒泡的作用

事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元素上)(事件委托),它还可以让你在对象层的不同级别捕获事件。

事件冒泡举例


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
    <style type="text/css">

        .grandfather{
            width:300px;
            height:300px;
            background-color:green;
            position:relative;
        }

        .father{
            width:200px;
            height:200px;
            background-color:gold;
        }

        .son{
            width:100px;
            height:100px;
            background-color:red;
            position:absolute;
            left:0;
            top:400px;
        }

    style>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

            $('body').click(function() {
                alert(4);
            });

            $('.grandfather').click(function() {
                alert(3);
            });

            $('.father').click(function() {
                alert(2);
            });


            $('.son').click(function(ev) {
                alert(1);
            });

        });


    script>
head>
<body>
    <div class="grandfather">
        <div class="father">
            <div class="son">div>
        div>
    div>
body>
html>

03.Jquery语法中_第2张图片
当点击红色的时候,依次弹出对话框显示1,2,3,4
点击事件从son-father-grafather-body,依次触发了

阻止事件冒泡

事件冒泡机制有时候是不需要的,需要阻止掉,通过 event.stopPropagation() 来阻止

    $('.son').click(function(ev) {
            alert(1);
            //ev.stopPropagation();添加这句代码阻止事件传递
        });

阻止默认行为 (冒泡事件)

// event.stopPropagation();

阻止右键菜单

$(document).contextmenu(function(event) {
    event.preventDefault();
});

合并阻止操作

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

// event.stopPropagation();
// event.preventDefault();

// 合并写法:
return false;

页面弹框实例

四、事件委托

事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。

一般绑定事件的写法


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件委托title>
    <style type="text/css">
        .list{
            list-style:none;
        }

        .list li{
            height:30px;
            background-color:green;
            margin-bottom:10px;
            color:#fff;
        }

    style>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){
            //给每个li绑定了事件,有多少个li,就重复绑定几个事件
            $('.list li').click(function(){
                alert($(this).html());
            })


        })

    script>
head>
<body>
    <ul class="list">
        <li>1li>
        <li>2li>
        <li>3li>
        <li>4li>
    ul>
body>
html>

事件委托的写法

$(function(){
    $list = $('#list');
    $list.delegate('li', 'click', function(event) {
        $(this).css({background:'red'});
    });
})
...
  • 1
  • 2
  • 3
  • 4
  • 5

取消事件委托

// ev.delegateTarge 委托对象
$(ev.delegateTarge).undelegate();

// 上面的例子可使用 $list.undelegate();

事件委托完整的demo


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件委托title>
    <style type="text/css">
        .list{
            list-style:none;
        }

        .list li{
            height:30px;
            background-color:green;
            margin-bottom:10px;
            color:#fff;
        }

    style>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

           /*  事件委托的写法 */

            $('.list').delegate('li', 'click', function() {
                alert($(this).html());

                //取消委托
                //$('.list').undelegate();

            });

        })

    script>
head>
<body>
    <ul class="list">
        <li>1li>
        <li>2li>
        <li>3li>
        <li>4li>
        <li>5li>
        <li>6li>
        <li>7li>
        <li>8li>
    ul>
body>
html>

五、jquery元素节点操作

创建节点

var $div = $('
'); var $div2 = $('
这是一个div元素
');

插入节点

1、append()和appendTo():在现存元素的内部,从后面插入元素


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>节点操作title>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

            var $span = $('span元素');
            var $p = $('

p段落元素

'
); var $h = $('

页面标题

'
); $('#div1').append($span); $('#div1').append($p); // $span.appendTo('#div1'); // $p.appendTo('#div1'); })
script> head> <body> <div id="div1">div> body> html>

03.Jquery语法中_第3张图片
2、prepend()和prependTo():在现存元素的内部,从前面插入元素

3、after()和insertAfter():在现存元素的外部,从后面插入元素

4、before()和insertBefore():在现存元素的外部,从前面插入元素

删除节点

$('#div1').remove();

todolist(计划列表)实例

六、节点操作和html函数的区别


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

            // html 操作比节点操作的性能高,建议能用html的地方就用html方法
            //$('#div1').html('链接');

            $('#div1').append('链接');

        })


    script>
head>
<body>
    <div id="div1">
        <p>这是一个p元素p>
    div>
body>
html>

七、已有元素的移动


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Documenttitle>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

            // 已有元素的操作类似于剪切
            $('.p1').insertBefore('.div1');

            $h = $('

h3标题

'
); //新创建的元素直接插入 $h.insertBefore('.p1'); });
script> head> <body> <div class="div1">这是一个div元素div> <p class="p1">这是一个p元素p> body> html>

03.Jquery语法中_第4张图片
本来p1在div1的后面, 已有元素的操作类似于剪切

八、判读jquery选择器是否选择成功


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>判读选择器是否选择成功title>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js">script>
    <script type="text/javascript">
        $(function(){

            // 用length(>0)属性来判断是否选中了元素

            var $div = $('#div1');
            var $span = $('#span1');

            alert($div.length);

            alert($span.length);

        })

    script>
head>
<body>
    <div id="div1">这是一个div元素div>
body>
html>

你可能感兴趣的:(jq学习笔记)