吃饭用的前端

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

2019-04-17  本文已影响0人  CNLISIYIII

本质上就是一个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>
上一篇下一篇

猜你喜欢

热点阅读