事件绑定
绑定方式有两种:
直接通过.eventName(fn)
方式绑定。
1 2 3
| $('button').click(function () { alert('hello tzk') })
|
通过on(eventName,function)
方式绑定
1 2 3
| $('button').on('click', function () { alert('hello tzk') })
|
- 编码效率略低
- 所有JavaScript事件都可以添加
注意:以上两种绑定方式均不会被覆盖,并且可以添加多个事件。
1 2 3 4 5 6 7 8 9
| $('button').click(function () { alert('hello tzk') }) $('button').click(function () { alert(123) }) $('button').mouseleave(function () { alert(mouseleave) })
|
事件解绑
事件解绑只有一个方法off()
,只需要用需要解绑的元素调用此方法即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| function test1() { alert('hello tzk') } function test2() { alert('hello 123') }
$('button').click(test1) $('button').click(test2) $('button').mouseleave(function () { alert('mouseleave') }) $('button').mouseenter(function () { alert('mouseenter') })
|
对于以上事件绑定:
不传入参数
会移除button元素的所有绑定事件。
传入一个参数
会移除所有指定类型的事件。
1
| $('button').off('click')
|
传入两个参数
会移除指定类型的指定事件
1
| $('button').off('click', test1)
|
jQuery事件冒泡和默认行为
什么是事件冒泡
当父子级关系时,如果为父级与子级同时绑定事件。当触发子级事件时,也会触发父级事件。
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <div class="father"> <div class="son"></div> </div>
<script> $(function () { $('.son').click(function () { alert('son') }) $('.father').click(function () { alert('father') }) }) </script>
|
如何阻止事件冒泡
在子级事件中添加return false
或者event.stopPropagation()
1 2 3 4 5
| $('.son').click(function (event) { alert('son') event.stopPropagation() })
|
阻止事件冒泡一定要在子级添加。
什么是默认行为
默认行为指一些标签默认的行为,例如a标签默认跳转网页。
如何阻止默认行为
两种方式。
1 2 3 4 5
| $('a').click(function (event) { alert('弹出注册框') event.preventDefault() })
|
事件自动触发
事件自动触发有两个方法,参数传入为字符串形式的事件名称。
trigger
会触发事件冒泡
1 2 3 4 5 6 7
| $('.son').click(function (event) { alert('son') }) $('.father').click(function () { alert('father') }) $('.son').trigger('click')
|
不会阻止默认行为
1 2 3 4
| $('input[type="submit"]').click(function () { alert('被点击了!') }) $('input[type="submit"]').trigger('click')
|
triggerHandler
不会触发事件冒泡
1 2 3 4 5 6 7
| $('.son').click(function (event) { alert('son') }) $('.father').click(function () { alert('father') }) $('.son').triggerHandler("click")
|
会阻止默认行为
1 2 3 4
| $('input[type="submit"]').click(function () { alert('被点击了!') }) $('input[type="submit"]').triggerHandler('click')
|
对a标签设置自动事件时,无法触发其默认行为。
1 2 3 4
| $('a').click(function () { alert('a') }) $('a').trigger('click')
|
如果想要触发其默认行为则需要如下更改:
1
| <a href="http://baidu.com" target="_blank"><span>注册</span></a>
|
1 2 3 4
| $('span').click(function () { alert('a') }) $('span').trigger('click')
|
自定义事件
自定义事件需要满足的条件:
只能通过on
绑定事件
1 2 3
| $('.son').on('myClick', function () { alert('son') })
|
事件必须通过trigger
触发
1
| $('.son').trigger('myclick')
|
事件命名空间
想要使事件的命名空间有效,必须满足两个条件
事件是通过on
来绑定的
用.Name
的方式区分是谁添加的。
1 2 3 4 5 6
| $('.son').on('myClick.zs', function () { alert('son') }) $('.son').on('myClick.ls', function () { alert('son') })
|
通过trigger()
触发事件
触发两个事件
1
| $('.son').trigger('myClick')
|
只触发某一个
1 2
| $('.son').trigger('myClick.ls')
|
利用trigger
触发子元素带命名空间的事件,那么父元素带相同命名空间的事件也会被触发,而父元素没有命名空间的事件不会被触发
1 2 3 4 5 6 7 8 9 10
| $('.father').on('myClick.ls', function () { alert('father click1') }) $('.father').on('myClick', function () { alert('father click2') }) $('.son').on('myClick.ls', function () { alert('son click1') }) $('.son').trigger('myClick.ls')
|
利用trigger
触发子元素不带命名空间的事件,那么子元素所有相同类型的事件和父元素所有相同类型的事件都会被触发
1 2 3 4 5 6 7 8 9 10
| $('.father').on('myClick.ls', function () { alert('father click1') }) $('.father').on('myClick', function () { alert('father click2') }) $('.son').on('myClick.ls', function () { alert('son click1') }) $('.son').trigger('myClick')
|
事件委托
什么是事件委托
请别人帮忙做事情,然后将昨晚的结果反馈给我们
将li
的点击事件委托给ul
元素监听。
1 2 3
| $('ul').delegate('li', 'click', function () { console.log($(this).html()) })
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; }
html, body { width: 100%; height: 100%; }
.mask { width: 100%; height: 100%; background: rgba(0, 0, 0, .5); position: fixed; left: 0; top: 0; }
.login { width: 570px; margin: 100px auto; position: relative; }
.login>span { width: 50px; height: 50px; position: absolute; top: 0; right: 0; } </style> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.js"></script> <script> $(function () { $('a').click(function () { var $mask = $('<div class="mask"><div class= "login" ><img src="https://ae01.alicdn.com/kf/U0acca6abe69449398ddbe1f56f032ecaw.jpg" alt=""><span></span></div>') $('body').append($mask) $('body').delegate('.login>span', 'click', function () { $mask.remove() }) return false }) }) </script> </head>
<body>
<a href="https://www.baidu.com">注册</a> <div> 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落我是段落 </div> </body>
</html>
|
移入移出事件
移入事件mouseover
移出事件mouseout
。这种方法 子元素被移入移出也会触发父元素的事件。
1 2 3 4 5 6 7 8
| $(function () { $('.father').mouseover(function () { console.log('鼠标移入了') }) $('.father').mouseout(function () { console.log('鼠标移出了') }) })
|
为了解决以上问题,jQuery提供了另外两个方法:鼠标移入mouseenter
和鼠标移出mouseleave
。
使用的方法为hover
,这个方法可以接收一个或两个参数,并且不会子元素被移入移出也会触发父元素的事件。
电影排行榜案例
- 将内容DIV设置为隐藏
- 当鼠标移入后将隐藏的div显示出来
- 当鼠标移出后将显示的div隐藏起来
直译方式
1 2 3 4 5 6
| $('li').mouseenter(function () { $(this).addClass('current') }) $('li').mouseleave(function () { $(this).removeClass('current') })
|
简化方式1
1 2 3 4 5
| $('li').hover(function () { $(this).addClass('current') }, function () { $(this).removeClass('current') })
|
简化方式2
1 2 3
| $('li').hover(function () { $(this).toggleClass('current') })
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; }
.box { width: 300px; height: 450px; margin: 50px auto; border: 1px solid #000;
}
.box>h1 { font-size: 20px; line-height: 35px; color: deeppink; padding-left: 10px; border-bottom: 1px dashed #ccc; }
ul>li { list-style: none; padding: 5px 10px; border: 1px dashed #ccc; }
ul>li:nth-child(-n+3) span { background-color: deeppink; }
ul>li>span { display: inline-block; height: 20px; width: 20px; background: #ccc; text-align: center; line-height: 20px; margin-right: 10px; }
.content { overflow: hidden; margin-top: 5px; display: none; }
.content>img { width: 80px; height: 120px; float: left; }
.content>p { width: 180px; height: 120px; float: right; font-size: 12px; line-height: 20px; }
.current .content { display: block; } </style> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.js"></script> <script> $(function () { $('li').hover(function () { $(this).toggleClass('current') }) }) </script> </head>
<body> <div class="box"> <h1>电影排行榜</h1> <ul> <li><span>1</span>电影名称 <div class="content"> <img src="https://cdn.jsdelivr.net/gh/blogimg/HexoStaticFile2@latest/2020/06/16/d0efe1580ab93f0e6b1a04bb07a8259f.png"> <p>测试文字哈哈哈</p> </div> </li> <li><span>2</span>电影名称<div class="content"> <img src="https://cdn.jsdelivr.net/gh/blogimg/HexoStaticFile2@latest/2020/06/16/d0efe1580ab93f0e6b1a04bb07a8259f.png"> <p>测试文字哈哈哈</p> </div> </li> <li><span>3</span>电影名称<div class="content"> <img src="https://cdn.jsdelivr.net/gh/blogimg/HexoStaticFile2@latest/2020/06/16/d0efe1580ab93f0e6b1a04bb07a8259f.png"> <p>测试文字哈哈哈</p> </div> </li> <li><span>4</span>电影名称<div class="content"> <img src="https://cdn.jsdelivr.net/gh/blogimg/HexoStaticFile2@latest/2020/06/16/d0efe1580ab93f0e6b1a04bb07a8259f.png"> <p>测试文字哈哈哈</p> </div> </li> <li><span>5</span>电影名称<div class="content"> <img src="https://cdn.jsdelivr.net/gh/blogimg/HexoStaticFile2@latest/2020/06/16/d0efe1580ab93f0e6b1a04bb07a8259f.png"> <p>测试文字哈哈哈</p> </div> </li> </ul> </div> </body>
</html>
|
Tab选项卡
实现思路
HTML结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <div class="box"> <ul class="nav"> <li class="current">123</li> <li>123</li> <li>123</li> <li>123</li> </ul> <ul class="content"> <li class="show"> <img src="https://ae02.alicdn.com/kf/U5303870feaa24803b2a9debcfb260c79T.jpg"> </li> <li> <img src="https://ae02.alicdn.com/kf/U3e7e3e14488d431b9b1178ddddc1fdd4T.jpg"> </li> <li> <img src="https://ae01.alicdn.com/kf/U0b5025b6d75b45c1a2590c1fdc6d5bcbq.jpg"> </li> <li> <img src="https://ae01.alicdn.com/kf/U7015657127cf4f8dbd19d9f03fd38636F.jpg"> </li> </ul> </div>
|
基本思路
监听鼠标移入事件
- 修改被移入选项卡的背景颜色
- 获取当前移入选项卡的索引
- 根据索引找到对应的图片
- 显示找到的图片
1 2 3 4 5 6 7 8 9 10 11
| $('.nav>li').mouseenter(function () { $(this).addClass('current') var index = $(this).index() console.log(index) var $li = $('.content>li').eq(index) $li.addClass('show') })
|
监听鼠标移出事件
- 还原被移入选项卡的背景颜色
- 获取当前移出选项卡的索引
- 根据索引找到对应图片
- 隐藏图片
1 2 3 4 5 6 7 8 9 10 11
| $('.nav>li').mouseleave(function () { $(this).removeClass('current') var index = $(this).index()
var $li = $('.content>li').eq(index) $li.removeClass('show') })
|
对于实现tab选项卡的简单思路
主要用到siblings()
方法,该方法取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $('.nav>li').mouseenter(function () { $(this).addClass('current') $(this).siblings().removeClass('current') var index = $(this).index() var $li = $('.content>li').eq(index) $li.siblings().removeClass('show') $li.addClass('show') })
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; }
.box { width: 440px; height: 298px; margin: 50px auto; border: 1px solid #000; }
.nav>li { list-style: none; width: 110px; height: 50px; background: orange; text-align: center; float: left; line-height: 50px; }
.nav>.current { background: #ccc; }
.content>li { list-style: none; display: none; text-align: center; }
.content>.show { display: block; }
.content>li>img { width: 240px; } </style> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.js"></script> <script> $(function () { /* $('.nav>li').mouseenter(function () { $(this).addClass('current') var index = $(this).index() console.log(index) var $li = $('.content>li').eq(index) $li.addClass('show') }) $('.nav>li').mouseleave(function () { $(this).removeClass('current') var index = $(this).index()
var $li = $('.content>li').eq(index) $li.removeClass('show') }) */ $('.nav>li').mouseenter(function () { $(this).addClass('current') $(this).siblings().removeClass('current') var index = $(this).index() var $li = $('.content>li').eq(index) $li.siblings().removeClass('show') $li.addClass('show') }) }) </script> </head>
<body> <div class="box"> <ul class="nav"> <li class="current">123</li> <li>123</li> <li>123</li> <li>123</li> </ul> <ul class="content"> <li class="show"> <img src="https://ae02.alicdn.com/kf/U5303870feaa24803b2a9debcfb260c79T.jpg"> </li> <li> <img src="https://ae02.alicdn.com/kf/U3e7e3e14488d431b9b1178ddddc1fdd4T.jpg"> </li> <li> <img src="https://ae01.alicdn.com/kf/U0b5025b6d75b45c1a2590c1fdc6d5bcbq.jpg"> </li> <li> <img src="https://ae01.alicdn.com/kf/U7015657127cf4f8dbd19d9f03fd38636F.jpg"> </li> </ul> </div> </body>
</html>
|