jQuery的add() not() filter() has() slice() map() each() is() end() addBack()方法详解

通过查询实现添加删除。

添加元素:.add()

 $(function(){
        console.log($(".item1,.item2"))
        console.log($(".item1").add(".item2").add('.item3'));
    })

删除元素:

  • not(selector)删除掉选择器中的元素。
  • filter(selector)筛选出来指定选择器匹配的。
$(function(){
        console.log($("li").not('.item4'))
    })

使用方法判断是否有.item4

<script type="text/javascript">

    $(function(){
        console.log($("li").not(function (index) {
            return $(this).hasClass('item4')
        }))
        console.log($("li").filter(function (index) {
            return $(this).hasClass('item4')
        }))
    })
</script>

与上面的结果一样。

has():

div id="box1">
    <div id="box2">
        <div id="box3">
            <p id="info">
                Lorem ipsum dolor sit amet.
            </p>
            <ul>
                <li class="item1">item1</li>
                <li class="item2">item2</li>
                <li class="item3">item3</li>
                <li class="item4">item4</li>
                <li class="item5">item5</li>
                <li class="item6">item6</li>
                <li class="item7">item7</li>
                <li class="item8">item8
                    <ul>

                    </ul>
                </li>
                <li class="item9">item9</li>
            </ul>
        </div>
    </div>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<script type="text/javascript">

    $(function(){
        /*console.log($("li").not(function (index) {
            return $(this).hasClass('item4')
        }))
        console.log($("li").filter(function (index) {
            return $(this).hasClass('item4')
        }))*/
        console.log($('li').has('ul'))
    })
</script>

通过数组索引。

获取子集。

slice(start[,end])

扫描二维码关注公众号,回复: 2840970 查看本文章
<div id="box1">
    <div id="box2">
        <div id="box3">
            <p id="info">
                Lorem ipsum dolor sit amet.
            </p>
            <ul>
                <li class="item1">item1</li>
                <li class="item2">item2</li>
                <li class="item3">item3</li>
                <li class="item4">item4</li>
                <li class="item5">item5</li>
                <li class="item6">item6</li>
                <li class="item7">item7</li>
                <li class="item8">item8
                    <ul>

                    </ul>
                </li>
                <li class="item9">item9</li>
            </ul>
        </div>
    </div>
</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<script type="text/javascript">

    $(function(){
        console.log($('li').slice(3))
        console.log($('li').slice(-2))
        console.log($('li').slice(3,5))//[3,5)
    })
</script>

转换元素:把一个jQuery对象转换成另一个jQuery对象。

map(callback) 包装的不是jQuery对象而是字符串。

<script type="text/javascript">

    $(function() {
        console.log($('div').map(function (index, domElement) {
            return this.id;//domElement.id也行
        }))
    })

</script>

如果返回null或undefined。就会被跳过,这个返回值就不会加入到集合中。我们可以通过这个回调函数中,做一些判断,决定是否把这个元素加入到集合中。

遍历元素:

each(iterator)

<script type="text/javascript">

    $(function() {
        console.log($('li').each(function (index, domElement) {
            this.title=this.innerText;
        }))
    })

</script>

给每个li加一个title属性。

<script type="text/javascript">

    $(function() {
        console.log($('div').each(function (index, domElement) {
            if(this.id==='box1'){
                return true;
            }
            this.title=this.innerText;
        }))
    })

</script>

如果是false,直接退出。相当于break。

is(selector):

<script type="text/javascript">

    $(function() {
        console.log($('#box3').children().is("p"))
    })

</script>

如果返回true则有p元素,false则没有p元素。

end();回到最近的破坏性操作之前。将匹配的元素集合变回前一次的状态。破坏性操作:任何对jQuery对象进行改变的操作。

<script type="text/javascript">

    $(function() {
        console.log($('#box3').find(".item4").css("color","red")
                        .find(".item6").css("color","blue")

        )
    })

item6并没有变为蓝色。被第一个find破坏了。所以我们要返回上一个的状态用end方法。

$(function() {
        console.log($('#box3').find(".item4").css("color","red")
                        .end().find(".item6").css("color","blue")

        )
    })
 console.log($('#box3').find(".item4").end());

从item4进来又出去。如果上一次调用不是破坏性方法,那么使用end则返回为空。

addBack():

addback () 返回当前的元素与先前的元素的集合

end( ) 只返回链式结构中先前的元素。

<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>

结果是后面3,4和5项是一个红色的背景:

 	

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

猜你喜欢

转载自blog.csdn.net/weixin_40512519/article/details/81588309
今日推荐