js进阶 11-19 jquery如何查找选择器的第一个父亲元素和第一个定位的父元素
js进阶 11-19 jquery如何查找选择器的第一个父亲元素和第一个定位的父元素
一、总结
一句话总结:closest()方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上。offsetParent()获得用于定位的第一个父元素。
1、closest()和parents()的主要区别是什么?
1,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找;2,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用给定的选择器表达式去过滤。
2、jquery中如何取出jquery对象中的dom对象?
get()方法,参数可有可无,有的话为索引
67 //通过get()方法来获取jQuery对象中封装的整个数组或数组的某个元素
68 // alert(arr.get())
69 //alert(arr.get(1))
70 //alert(arr.get().join('-'))
71 alert(arr.get().reverse())
3、map()方法是干什么的?
map() 把当前匹配集合中的每个元素传递给函数,返回值是 jQuery 封装的数组。
59 var arr=$('input').map(function(){
60 return $(this).val()
61 })
62
63 //alert(arr.length)
4、jquery中用什么表示定位?
offset
比如:offsetParent()获得用于定位的第一个父元素。即:返回父元素中第一个其position设为relative或者absolute的元素。此方法仅对可见元素有效。
77 $('#btn6').click(function(){
78 $('span').offsetParent().css("border", "solid green 1px");
79 })
二、jquery如何查找选择器的第一个父亲元素和第一个定位的父元素
1、相关知识
- add() 方法将元素添加到匹配元素的集合中。
- addBack()添加堆栈中元素集合到当前集合,一个选择性的过滤选择器。
- end() 结束当前链中最近的一次筛选操作,并将匹配元素集合返回到前一次的状态。
- map() 把当前匹配集合中的每个元素传递给函数,返回值是 jQuery 封装的数组。
- closest()方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上。
closest和parents的主要区别是:1,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找;2,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用给定的选择器表达式去过滤。
- offsetParent()获得用于定位的第一个父元素。即:返回父元素中第一个其position设为relative或者absolute的元素。此方法仅对可见元素有效。
2、代码
1 <!DOCTYPE html> 2 <html lang="en"> 3 <style> 4 </style> 5 <head> 6 <meta charset="UTF-8"> 7 <title>演示文档</title> 8 <script type="text/javascript" src="jquery-3.1.1.min.js"></script> 9 <style> 10 li{ 11 margin-top: 5px;width: 150px; 12 } 13 </style> 14 </style> 15 </head> 16 <body> 17 <div> 18 <p>段落1</p> 19 <p>段落2</p> 20 <p>段落3</p> 21 </div> 22 <ol style="position: relative;"> 23 <li>列表项0</li> 24 <li>列表项1</li> 25 <li>列表项2</li> 26 <li class="red">列表项3</li> 27 <li>列表项4</li> 28 <li>列表项5 29 <ol> 30 <li>列表项1.1</li> 31 <li><span>列表项1.2</span></li> 32 </ol> 33 </li> 34 </ol> 35 <input id="btn1" type="button" value='add'> 36 <input id="btn2" type="button" value='addBack'> 37 <input id="btn3" type="button" value='end'> 38 <input id="btn4" type="button" value='map'> 39 <input id="btn5" type="button" value='closest'> 40 <input id="btn6" type="button" value='offsetParent'> 41 <script type="text/javascript"> 42 $(function(){ 43 $('#btn1').click(function(){ 44 //这里的add()相当于和的意思 45 // $("p").css("color","red") 46 // $("li").css("color","red") 47 // $("p,li").css("color","red") 48 $("p").css("background","#ccc").add('li').css("color","red") 49 }) 50 $('#btn2').click(function(){ 51 $(".red").nextAll().addBack().css("background-color", "red"); 52 }) 53 $('#btn3').click(function(){ 54 // $('li').filter(':even').css("background-color", "red"); 55 // $('li').filter(':odd').css("background-color", "orange"); 56 $('li').filter(':even').css("background-color", "red").end().filter(':odd').css("background-color", "orange"); 57 }) 58 $('#btn4').click(function(){ 59 var arr=$('input').map(function(){ 60 return $(this).val() 61 }) 62 63 //alert(arr.length) 64 // var arr2=[1,2,3,'A','B','C'] 65 // alert(arr) 66 //map()函数的返回值为jQuery类型 67 //通过get()方法来获取jQuery对象中封装的整个数组或数组的某个元素 68 // alert(arr.get()) 69 //alert(arr.get(1)) 70 //alert(arr.get().join('-')) 71 alert(arr.get().reverse()) 72 }) 73 $('#btn5').click(function(){ 74 // $('span').parents('li').css("border", "solid green 1px"); 75 $('span').closest('li').css("border", "solid green 1px"); 76 }) 77 $('#btn6').click(function(){ 78 $('span').offsetParent().css("border", "solid green 1px"); 79 }) 80 }) 81 </script> 82 </body> 83 </html>
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2024-10-30:27岁,宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672