美文网首页吃饭用的前端
jQuery(一)——注册事件和选择器

jQuery(一)——注册事件和选择器

作者: CNLISIYIII | 来源:发表于2019-04-17 15:05 被阅读0次

    本质上就是一个js文件,jQuery库。可以简化代码,提高开发效率。
    使用前要先引入jQuery文件

    <script src="lib/jquery-1.12.4.js"></script>
    

    (一)jQuery对象和DOM对象

    1.DOM和jQuery对象区别

    通过DOM方式所获取的元素就是DOM对象。

    代码举栗:

    <body>
        <div></div>
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
            //DOM对象获取元素
            var div = document.querySelector('div');
            div.innerText = 'im div';
            //jQuery对象获取
            var $div = $('div');
            $div.text('im jquery div');
        </script>
    </body>
    

    2.jQuery对象

    $和jQuery标识符指向同一个函数,推荐使用$。
    $是一个函数,调用的时候需要传入参数。selector表示选择器。

    1)$('选择器') 返回一个jQuery对象

    代码举栗:

    <body>
        <button>按钮</button>
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
            var $btn = $('button'); //获取到了按钮对应的jQuery对象
            console.log($btn instanceof jQuery); //true
        </script>
    </body>
    

    2)DOM对象可以转换成jQuery对象

    $(selector,context) //通过选择器获取元素,context可以忽略
    $(element) //把DOM对象转换成jQuery对象的调用方式

    语法:$(DOM对象);

    代码举栗:

    <body>
        <div></div>
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
            var dom = document.querySelector('div');
            // dom.innerText = '内容';
            // dom.text('内容');  //报错
            var $dom = $(dom);
            $dom.text('内容');
        </script>
    </body>
    

    3)jQuery对象

    语法:jQuery对象[0]

    jQuery对象的本质是:给一个伪数组,这个伪数组才是jQuery对象。伪数组中取出的个体是DOM对象。

    代码举栗:

    <body>
        <div></div>
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
            var $div = $('div');
            console.log( $div instanceof jQuery); //true
            console.log( $div[0] instanceof jQuery); //false。通过中括号索引方式取出的个体是DOM对象。
            $div[0].innerText = '内容'; //有效
        </script>
    </body>
    

    (二)jQuery注册事件

    事件三要素:事件源、事件类型、事件处理程序

    语法:jQuery对象.事件名不加on(事件处理程序);

    jQuery可以给组注册事件。但是在DOM中不能给组注册事件。

    代码举栗:

    <body>
        <button>按钮</button>  
        <ul>
            <li>我是列表项1</li>
            <li>我是列表项2</li>
            <li>我是列表项3</li>
            <li>我是列表项4</li>
            <li>我是列表项5</li>
        </ul>  
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
            $('li').click( function() {
                //在事件处理程序中,this是DOM对象
                alert( $(this).text() );   //text内不传参数表示获取内容
            });
        </script>
    </body>
    

    这里存在隐式迭代现象:jQuery内部自动循环,为每一个元素注册事件。

    (三)jQuery操作样式

    1.设置单个样式

    语法:jQuery对象.css(name,value);

    代码举栗:

    <body>
        <div></div>
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
            //分次设置样式
            $('div').css('width', 500); //值可以直接写数字不用加px单位,也可以写成字符串‘500px’
            $('div').css('height', '500px');
            $('div').css('background', 'red');
            
            //一次设置多个样式
            $('div').css({
                width: 500,
                height: 500,
                background: 'red'
            })
        </script>
    </body>
    

    2.获取

    语法:jQuery对象.css(name);

    代码举栗:

    <body>
        <div></div>
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
            var w = $('div').css('width');
            console.log(w); //字符串 500px。
            console.log(parseInt(w)); //转成数字 500。     
        </script>
    </body>
    

    (四)选择器

    1.基本选择器

    2.层级选择器

    3.过滤器选择器

    代码举栗:(表格隔行变色)

    <script>
            //索引为奇数的tr设置为灰色。对于用户是偶数行
            $('tbody tr:odd').css('background', '#ccc');
            //索引为偶数的tr设置为蓝色
            $('tbody tr:even').css('background', 'skyblue');
            //筛选第三个tr设置字体颜色为红色
            $('tbody tr:eq(2)').css('color', 'red');
        </script>
    

    4.选择器

    只有jQuery才能点出这些方法,DOM不能。

    1)children方法

    代码举栗:

    <body>
        <ul>
            <li>列表项1</li>
            <li>列表项2</li>
            <li>列表项3</li>
        </ul>
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
            console.log( $('ul>li') );
            console.log( $('ul').children() ); //获取ul父子关系下的子元素li
        </script>
    </body>
    

    2)find方法

    find方法使用时必须传入参数

    代码举栗:

        <script>
            //获得list类名下的所有li,包括子元素和孙元素
            console.log( $('.list').find('li') );     
        </script>
    

    3)下拉菜单案例

    代码举栗:

    <script src="lib/jquery-1.12.4.js"></script>
        <script>
            var $lis = $('#menu').children();
            $lis.mouseenter(function() {
                //给当前的li 内部的ul 更改样式display
                $(this).find('ul').css('display','block');
            });
            $lis.mouseleave(function() {
                $(this).find('ul').css('display','none'); //find方法也可以换成children
            });
        </script>
    

    4)其他选择器筛选方法

    代码举栗:(手风琴菜单)

    <script>
           $('span').click(function() {
               //让当前点击的span 的下一个兄弟元素 的div 变为显示
               $(this).next().css('display', 'block');
               //当前点击的span的 父元素的 li的兄弟们 中的div 变为隐藏
               $(this).parent().siblings().find('div').css('display', 'none');
           });       
        </script>
    

    5)选择器eq和方法eq的区别

    代码举栗:

    <body>
        <ul>
            <li>列表项1</li>
            <li>列表项2</li>
            <li>列表项3</li>
        </ul>
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
           //选择器:eq(index)
           $('li:eq(1)').css('color', 'red');
           //方法: jQuery对象.eq(index)
           $('ul li').eq(1).css('color', 'red');
        </script>
    </body>
    

    当索引保存在变量中时,推荐用方法,不要用选择器

    var index = 1;
    $('li:eq(' + index + ')').css('color', 'red');
    $('ul li').eq(index).css('color', 'red');
    

    6)index方法

    jQuery对象.index(); 获取元素在同级元素中的索引

    代码举栗:

    <body>
        <ul>
            <li>列表项1</li>
            <li>列表项2</li>
            <li>列表项3</li>
            <li>列表项4</li>
            <li>列表项5</li>
        </ul>
        <script src="lib/jquery-1.12.4.js"></script>
        <script>
            $('li'),click(function() {
                alert( $(this).index );
            });
        </script>
    </body>
    

    相关文章

      网友评论

        本文标题:jQuery(一)——注册事件和选择器

        本文链接:https://www.haomeiwen.com/subject/unlnwqtx.html