jQuery 선택기의 :first-child, :first 및 :first-of-type 간의 차이점에 대한 자세한 설명

黄舟
풀어 주다: 2017-06-23 14:39:01
원래의
1419명이 탐색했습니다.

약간의 여담으로 시작하겠습니다. 졸업 후 첫 직장이 프론트엔드가 아니어서 공기업이었는데요. 3개월 정도 일을 하다가 정말 편한 생활을 견디지 못해 (사실은 돈이 부족함) 그런 다음 원하는 방향을 결정하고 페이지부터 시작하기를 선택했습니다. 그래서 이제 삐삐로 일한 지 거의 3개월이 되었습니다. 소규모 스타트업 회사에 인턴십을 구했기 때문에 실제로 처음부터 끝까지 프론트엔드에 대한 지식이 거의 없었습니다. . , 그래서 최근에는 jQuery API만 검색할 수 있습니다.

좋습니다. 본론으로 들어가겠습니다.

API에서 :first-child 선택기를 이렇게 설명하는 것을 봤습니다(다른 분의 번역과 편찬을 ​​사용했습니다. 공식 영어 버전을 읽는 것이 더 낫다고 생각하지만 여전히 게으릅니다. 이 버전을 사용하세요)

이에 대해 처음에는 매우 당황했습니다. 왜냐하면 반환된 것은 객체의 배열이기 때문입니다(개인적으로 이해하지만, 맞는지는 모르겠습니다). 이 선택기의 이름은 :first-child입니다.(정말 불만스럽습니다. 왜 아이들이라고 부르지 않겠습니까?) 나중에 직접 시도해 본 결과, 순회하기 위해 각각()을 사용하지 않으면 첫 번째 요소가 스크린샷에 있는 배열의 배열이 기본적으로 반환됩니다. (사실 제가 얘기하고 싶은 건 아니고 길을 닦기 위한 것입니다.)

이 API에서 조금 뒤돌아 보면 선택기 :first-of-type이 보일 것입니다. 다음은 이 선택기에 대한 그의 설명입니다.

나중에 그가 이 부분의 시작 부분에서 말한 내용 때문에 나는 Baidu에 가서: first-of-type에 대한 온라인 설명을 확인한 다음: first도 확인했습니다. -어린이. 일부 지침이 정확하지 않은 것 같습니다.

자, 단어가 너무 많으니 바로 코드와 효과로 넘어가겠습니다. (코드 부분, jQuery 소개, 귀찮게 인터넷에서 찾을 필요 없이 로컬 경로를 사용하면 됩니다.)

【:first】

<!DOCTYPE html><html lang="zh-CN"><head>
    <title>test</title>
    <meta charset="utf-8">
    <script src="./js/jquery-1.11/jquery.min.js"></script></head><body>
    <p>
        <ul>
            <li><p>测试li-11</p></li>
            <li><p>测试li-12</p></li>
            <li><p>测试li-13</p></li>
        </ul>
        <hr>
        <ul>
            <li><p>测试li-21</p></li>
            <li><p>测试li-22</p></li>
            <li><p>测试li-23</p></li>
        </ul>
        <hr>
    </p>
    <hr>
    <ul>
        <li><p>测试li-31</p></li>
        <li><p>测试li-32</p></li>
        <li><p>测试li-33</p></li>
    </ul>
    <script>
        $(document).ready(function(){
            $("ul li:first").each(function(){
                alert($(this).html());
            })
        })    </script></body></html>
로그인 후 복사

【:여러 브라우저에서 첫 번째 선택기 표시】

【:first-child】

<!DOCTYPE html><html lang="zh-CN"><head>
    <title>test</title>
    <meta charset="utf-8">
    <script src="./js/jquery-1.11/jquery.min.js"></script></head><body>
    <p>
        <ul>
            <li><p>测试li-11</p></li>
            <li><p>测试li-12</p></li>
            <li><p>测试li-13</p></li>
        </ul>
        <hr>
        <ul>
            <li><p>测试li-21</p></li>
            <li><p>测试li-22</p></li>
            <li><p>测试li-23</p></li>
        </ul>
        <hr>
    </p>
    <hr>
    <ul>
        <li><p>测试li-31</p></li>
        <li><p>测试li-32</p></li>
        <li><p>测试li-33</p></li>
    </ul>
    <script>
        $(document).ready(function(){
            $("ul li:firstchild").each(function(){
                alert($(this).html());
            })
        })    </script></body></html>
로그인 후 복사

【:다양한 브라우저에서 첫 번째 자식 선택기 효과】(순회 때문에 3개의 선택된 요소가 있습니다. 즉, 3개의 팝업 창이 나타납니다. 여러 브라우저는 waterfox, chrome, IE 11, Edge)

[waterfox]

[chrome] 추신: 크롬 밑에 팝업창이 있는 것 같은데 다른 창으로 전환이 안되네요, 그래서 스크린샷 3개만 찍고 합칠 수 있어요

【IE 11】

【Edge】

【:first-of-type】

<!DOCTYPE html><html lang="zh-CN"><head>
    <title>test</title>
    <meta charset="utf-8">
    <script src="./bootstrap/js/jquery-1.11/jquery.min.js"></script></head><body>
    <p>
        <ul>
            <li><p>测试li-11</p></li>
            <li><p>测试li-12</p></li>
            <li><p>测试li-13</p></li>
        </ul>
        <hr>
        <ul>
            <li><p>测试li-21</p></li>
            <li><p>测试li-22</p></li>
            <li><p>测试li-23</p></li>
        </ul>
        <hr>
    </p>
    <hr>
    <ul>
        <li><p>测试li-31</p></li>
        <li><p>测试li-32</p></li>
        <li><p>测试li-33</p></li>
    </ul>
    <script>
        $(document).ready(function(){
            $("ul li:first-of-type").each(function(){
                alert($(this).html());
            })
        })    </script></body></html>
로그인 후 복사

【:first-of- 유형 선택 각 브라우저별 표시 효과]

이 부분의 표시 효과는 [:first-child] 선택기와 동일합니다. 길이를 줄이려면 스크린샷을 찍지 않는 것이 좋습니다.

【요약】

위 스크린샷에서 우리는 :first , :first-child , :first-of-type 이 세 가지 선택기가 서로 다른 브라우저 코어를 가지며 jQuery 및 디스플레이 효과에 영향을 미치지 않는다는 것을 알 수 있습니다. .

반면에

[:first] 선택기는 단일 노드, 즉 고유하고 확실한 노드를 반환합니다

【:first-child】 선택기는 실제로 노드 배열을 반환합니다. 각 노드가 순회에 사용되지 않으면 기본적으로 배열의 첫 번째 노드가 반환됩니다(나중에 size()의 반환 값을 확인했는데 실제로는 그렇습니다. 3, 이는 내 생각을 확인합니다)

[:first-of-type] 선택자는 [:first-child]와 유사합니다(동일하지 않은 이유는 이 예에서는 결과가 동일하고 두 개의 선택기 함수가 다름) 반환되는 것도 노드 배열입니다. 각각이 순회에 사용되지 않으면 배열의 첫 번째 노드가 기본적으로 반환됩니다(나중에 size()의 반환 값을 확인했습니다. 그것은 실제로 3인데, 이는 내 생각을 확증해 줍니다).

PS: 첫 번째에 해당하는 마지막이 있는 것 같습니다. 아직 본 적은 없지만, 하나가 첫 번째이고 다른 하나가 마지막이라는 점만 빼면 똑같다고 생각합니다. 무료, 시간이 되면 마지막 3명의 선정자 검증 결과를 올려드리겠습니다

위 내용은 jQuery 선택기의 :first-child, :first 및 :first-of-type 간의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿