zoukankan      html  css  js  c++  java
  • 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>
     
  • 相关阅读:
    基于OpenStack构建企业私有云(8)Cinder
    基于OpenStack构建企业私有云(6)创建第一台云主机
    基于OpenStack创建企业私有云(7)Horizon
    基于OpenStack构建企业私有云(4)Nova
    python--006--三元运算、列表解析、生成器表达式
    python--006--迭代器协议和for循环工作机制
    python--005--文件操作(b,其他)
    python--005--文件操作(r,w,a)
    python--004--函数(其他内置函数)
    python--004--函数(zip、min、max)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9237305.html
Copyright © 2011-2022 走看看