jQuery操作和选择器

一、jQuery注册事件

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

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

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

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

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

二、jQuery操作样式

1. 设置单个样式

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

 1 <body>
 2     <div></div>
 3     <script src="lib/jquery-1.12.4.js"></script>
 4     <script>
 5         //分次设置样式
 6         $('div').css('width', 500); //值可以直接写数字不用加px单位,也可以写成字符串‘500px’
 7         $('div').css('height', '500px');
 8         $('div').css('background', 'red');
 9         
10         //一次设置多个样式
11         $('div').css({
12             width: 500,
13             height: 500,
14             background: 'red'
15         })
16     </script>
17 </body>
知识兔

2. 获取

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

1 <body>
2     <div></div>
3     <script src="lib/jquery-1.12.4.js"></script>
4     <script>
5         var w = $('div').css('width');
6         console.log(w); //字符串 500px。
7         console.log(parseInt(w)); //转成数字 500。     
8     </script>
9 </body>
知识兔

三、选择器

1. 基本选择器

 

2. 层级选择器

 

3. 过滤器选择器

 

表格隔行变色效果:

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

4. 选择器

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

 

1)children方法

 1 <body>
 2     <ul>
 3         <li>列表项1</li>
 4         <li>列表项2</li>
 5         <li>列表项3</li>
 6     </ul>
 7     <script src="lib/jquery-1.12.4.js"></script>
 8     <script>
 9         console.log( $('ul>li') );
10         console.log( $('ul').children() ); //获取ul父子关系下的子元素li
11     </script>
12 </body>
知识兔

2)find方法

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

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

3)下拉菜单案例

 1     <script src="lib/jquery-1.12.4.js"></script>
 2     <script>
 3         var $lis = $('#menu').children();
 4         $lis.mouseenter(function() {
 5             //给当前的li 内部的ul 更改样式display
 6             $(this).find('ul').css('display','block');
 7         });
 8         $lis.mouseleave(function() {
 9             $(this).find('ul').css('display','none'); //find方法也可以换成children
10         });
11     </script>
知识兔

4)其他选择器筛选方法

手风琴菜单效果:

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

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

 1 <body>
 2     <ul>
 3         <li>列表项1</li>
 4         <li>列表项2</li>
 5         <li>列表项3</li>
 6     </ul>
 7     <script src="lib/jquery-1.12.4.js"></script>
 8     <script>
 9        //选择器:eq(index)
10        $('li:eq(1)').css('color', 'red');
11        //方法: jQuery对象.eq(index)
12        $('ul li').eq(1).css('color', 'red');
13     </script>
14 </body>
知识兔

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

1 var index = 1;
2 $('li:eq(' + index + ')').css('color', 'red');
3 $('ul li').eq(index).css('color', 'red');
知识兔

6)index方法

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

 1 <body>
 2     <ul>
 3         <li>列表项1</li>
 4         <li>列表项2</li>
 5         <li>列表项3</li>
 6         <li>列表项4</li>
 7         <li>列表项5</li>
 8     </ul>
 9     <script src="lib/jquery-1.12.4.js"></script>
10     <script>
11         $('li'),click(function() {
12             alert( $(this).index );
13         });
14     </script>
15 </body>
知识兔



知识兔
计算机