Traversing-Miscellaneous Traversing

 

一、.add()

可讓開發者額外再加上要處理的元素。

有五種多載方法

.add( Selector selector )

.add( Element elements )

.add( htmlString html )

.add( jQuery selection )

.add( Selector selector, Element context )

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <script src="https://code.jquery.com/jquery-3.0.0.js"></script>
    <meta name="viewport" content="width=device-width">
</head>
<body>
    <ul>
        <li>list item 1</li>
        <li>list item 2</li>
        <li>list item 3</li>
    </ul>
    <p>a paragraph</p>

    <script>
        $("li").add("p").css("background-color", "red");
    </script>
</body>
</html>

結果為

 

二、.addBack()

.addBack( [Selector selector ] )

將先前selector集合的作用與現在selector集合的作用一起呈現。

範例一、

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <script src="https://code.jquery.com/jquery-3.0.0.js"></script>
</head>
<body>
    <ul>
        <li>list item 1</li>
        <li>list item 2</li>
        <li class="third-item">list item 3</li>
        <li>list item 4</li>
        <li>list item 5</li>
    </ul>

    <script>
        $("li.third-item").nextAll()
            .addBack().css("background-color", "red");
    </script>
</body>
</html>

上例意思為將

$("li.third-item").css("background-color", "red");

的效果與

$("li.third-item").nextAll().css("background-color", "red");

的效果一起呈現。

 

注意,.addBack()跟.add()的特性不一樣,

.addBack()其集合是會累加然後再呈現的。

.add()其集合是各自獨立呈現的。

 

三、.andSelf()

has been deprecated

 

四、.contents()

用來取得子元素的節點與內文。

他與.text()方法的差別是.text()是回傳string,而.contents()方法是回傳jQuery object。

 

五、.end()

用來將呈現做一個結尾,讓下一個呈現可以繼承之前的selector做下一個呈現,而不被干擾。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <script src="https://code.jquery.com/jquery-3.0.0.js"></script>
</head>
<body>
    <ul class="first">
        <li class="foo">list item 1</li>
        <li>list item 2</li>
        <li class="bar">list item 3</li>
    </ul>
    <ul class="second">
        <li class="foo">list item 1</li>
        <li>list item 2</li>
        <li class="bar">list item 3</li>
    </ul>

    <script>
        $("ul.first")
          .find(".foo")
            .css("background-color", "red")
          .end()
          .find(".bar")
            .css("background-color", "green");
    </script>
</body>
</html>

 

六、.not()

請參考Traversing-Filtering的第八項。