过滤选择器及jQuery提供的相关方法

基本过滤器:

<body>

    <ul>
        <li>列表1</li>
        <li class="red">列表2</li>
        <li>列表3</li>
        <li>列表4</li>
        <li>列表5</li>
        <li>列表6</li>
    </ul>
    <ul>
        <li>列表1</li>
        <li>列表2</li>
        <li>列表3</li>
        <li>列表4</li>
        <li>列表5</li>
        <li>列表6</li>
    </ul>
    
    <h1>我是标题</h1>
    <div>
        <h2>副标题</h2>
    </div>
    <input type="text" />
</body>
$(function(){
    $('li:first').css('color','red');
    $('ul:first li:last').css('color','blue');
    $('li:not(.red)').css('color','red');
    $('li:even').css('color','red');
    $('li:odd').css('color','blue');
    $('li:eq(2)').css('color','red');
    $('li:eq(-2)').css('color','blue');
    $('li:gt(2)').css('color','red');
    $('li:gt(-2)').css('color','red');
    $('li:lt(2)').css('color','red');
    $('li:lt(-2)').css('color','blue');
    $('div :header').css('color','red');
    //组合
    $('input').get(0).focus();
    $(':focus').css('background','red');
});

几个jQuery替代方法:

    $('li').first().css('color','red');
    $('li').last().css('color','red');
    $('li').not('.red').css('color','red');
    $('li').eq(2).css('color','red');

内容过滤器:

<body>
    
    <div>百度的地址:www.baidu.com</div>
    <div>淘宝的地址:www.taobao.com</div>
    <div></div>
    <ul>
        <li>列表1</li>
        <li class="red">列表2</li>
        <li>列表3</li>
        <li>列表4</li>
        <li>列表5</li>
        <li>列表6</li>
    </ul>
</body>
$(function(){
    $('div:contains(www.baidu.com)').css('color','red');
    $('div:empty').css('background','red').css('height','20px');
    $('ul:has(.red)').css('color','red');
    $('div:parent').css('color','blue');
    
    //jQuery方法
    $('ul').has('.red').css('color','red');
    //jQuery提供了一个名称和parent相似的方法,但功能并不是选取含有子元素的的元素,二十获取当前元素的父元素,返回的元素集合
    $('li').parent().css('color','blue');//当前元素的父节点
    $('li').parents().css('color','red');//祖先节点
    $('li').parentsUntil('body').css('color','red');//祖先节点,遇到body为止
    
});

可见性过滤器:

<body>
    
    <div style="display: none;">百度的地址:www.baidu.com</div>
    <div>淘宝的地址:www.taobao.com</div>
    <div>fasdfs</div>

</body>
$(function(){
    //将隐藏的元素颜色设为红色,并在一秒内慢慢显示出来
    $('div:hidden').css('color','red').show(1000);
    $('div:visible').css('color','blue');
});

子元素过滤器:

<body>
    
    <ul>
        <li>列表1</li>
        <li class="red">列表2</li>
        <li><span>列表3</span></li>
        <li>列表4</li>
        <li>列表5</li>
        <li>列表6</li>
    </ul>    
    <ul>
        <li>列表1</li>
        <li class="red">列表2</li>
        <li>列表3</li>
        <li>列表4</li>
        <li>列表5</li>
        <li>列表6</li>
    </ul>
    <ul>
        <li>aaa</li>
    </ul>
</body>
$(function(){
    
    $('li:first-child').css('color','red');//两个ul的第一个li都是红色
    $('li:last-child').css('color','blue');
    $('li:only-child').css('color','red');

    $('li:nth-child(even)').css('color','blue');
    $('li:nth-child(odd)').css('color','blue');
    $('li:nth-child(1)').css('color','blue');
    $('li:nth-child(3n)').css('color','blue');//3,6,9 ...显示
    $('li:nth-child(3n+1)').css('color','red');//1,4,7,10 ...显示
    
});

jQuery提供的其他方法:

<body>
    <div>我的名字是:<strong>党兴明</strong>,谢谢</div>
    <ul id="box">
        <li>列表1</li>
        <li class="red" title="列表2">列表2</li>
        <li><span>列表3</span></li>
        <li class="red">列表4</li>
        <li>列表5</li>
        <li>列表6</li>
    </ul>    
    <ul>
        <li>列表1</li>
        <li class="red">列表2</li>
        <li>列表3</li>
        <li>列表4</li>
        <li>列表5</li>
        <li>列表6</li>
    </ul>
    <ul>
        <li>aaa</li>
    </ul>
</body>
$(function(){
    
    alert($('.red').is('li'));//true
    alert($('.red').is($('li')));//true
    alert($('.red').is(function(){
        return $(this).attr('title') == '列表2';//必须使用this来表示要判断的元素
    }));

    alert($('li').eq(1).hasClass('red')); //看第二个li有没有red这个class属性
    
    $('li').slice(2,4).css('color','red'); //选择3,4
    $('li').slice(2).css('color','red');//从2向下
    $('li').slice(2,-2).css('color','red');//前后两个不被选定
    
    alert($('#box').find('li').end().get(0));//找到前一个状态,不一定是父
    alert($('#box').find('li').parent().get(0));
    $('#box').next().end().css('color','red');
    
    alert($('div:first').children().size()); //1
    alert($('div:first').contents().size()); //3所有节点,包括文本节点

    $('li').filter('.red, :first, :last').css('color','blue');//.red和首尾都选中
    $('li').filter(function(){
        return $(this).attr('class') == 'red' && $(this).attr('title') == '列表2';
    }).css('color','red');
    
});
原文地址:https://www.cnblogs.com/by-dxm/p/6389388.html