jQuery学习笔记(二)之jQuery选择器


html页面元素就一些html标签(元素),和对应的html元素属性组成,

属性包括id,class,获取css样式属性等,其中通过css样式属性获取jQuery,这里的css样式属性就可以称为jQuery的css选择器

另外jQuery还支持xpath选择,其实跟css差不多。

下面就这对各种常用的选择器怎么使用做个说明:

1、id选择器

如:页面上有这段代码:<body><div id='myDiv'></div></body>

如果我要获取<div id='myDiv'></div>这个页面元素,我可以这样:

       var jqObj = $('#myDiv') ;

这样我就获取这个元素并返回jQuery对象,接下来我们就可以使用jQuery的函数操作这个jqObj,如

        $('#myDiv').hide();

或者jqObj.hide();//hide函数是将id为myDiv的div元素隐藏起来,就变成了<div id='myDiv' style="display:none;"></div>

2、类选择器(html元素的class属性)

如页面上有这段代码:

<body><div><p class='pp'></p><p class='pp'></p><p class='pp'></p></div></body>

总共3个p元素。

$('.pp');:这样就获取到所有的p元素了。

在学习笔记(一)中曾经说,jQuery通过构造函数获取的jQuery对象是一个集合(网页html元素的集合),这个很重要。

现在$('.pp')就是一个html元素的集合,不过他是一个jQuery对象,要使用jQuery的api去操作。

如给所有的p元素加上一个类型class:

$('.pp').addClass('newClass');//这样操作就是对所有的元素都进行addClass操作

则变成了

<body><div><p class='pp newClass'></p><p class='pp newClass'></p><p class='pp newClass'></p></div></body>

很多时候我们要操作不是对所有的元素都进行addClass操作,如这对第一和第三个p元素进行addClass操作:

$('.pp').each(function(index,item){

if(1 != index){//第二个p元素不进行addClass操作

$(this).addClass('newClass');

}

});

3、元素(标签)选择器

<body><div><p class='pp'></p><p class='pp'></p><p class='pp'></p></div></body>

如:$('p')就选择了所有的p元素

4、缩小范围的选择器应用

如在实际应用中,我们只知道某个元素的id,class或者标签(这能确定这个元素)

那么我们就能通过这个慢慢缩小范围找到我们想要的元素:

<body>

<div id='div1'>

<ul>

<li>哈哈</li>

</ul>

</div>

<div id="div2">

<ul>

<li>嘻嘻</li>

<li>呜呜</li>

</ul>

</div>


</body>

如果我们需要获取到<li>嘻嘻</li>这个元素

我们就可以先定位到其父辈,然后由父辈往下搜索:

$('div#div2  ul li');这样就获取到所有的li元素:<li>嘻嘻</li><li>呜呜</li>

$('div#div2  ul li').eq(0);就获取到了<li>嘻嘻</li>

等同于$('div#div2  ul li:first');

等同于$('div#div2  ul li:eq(0)');

其中:first,:eq()是伪类选择器,而eq()方法是jQuery为实现伪类一样效果提供的方法

5、伪类选择器

1)通过构造函数获取的jQuery对象是一个集合(网页html元素的集合),对集合中的某个元素进行快速定位:

    $("p:first"); 第一个 <p> 元素

    $('p:last'); 最后一个<p> 元素

    $('p:even'); 所有偶数的<p> 元素

    $('p:odd'); 所有奇数的<p> 元素

     $('p:eq(1)');  第二个 <p> 元素,下标从0开始

     $('p:gt(1)');  标大于1的所有 <p> 元素,下从0开始

      $('p:lt(1)');  下标小于1的所有 <p> 元素,下标从0开始

     $("p:not('class=newClass')"); 不包括class=‘newClass’的<p>元素

     $('p:first-child'); 所有<p>元素的第一个子元素的集合

2)表单元素快速定位伪类选择器

      $(':input'); 所有的<input>元素

      $(':text'); 所有type="text"的<input>元素

       $(':password'); 所有type="password"的<input>元素

       $(':radio'); 所有type="radio的<input>元素

$(':checkbox'); 所有type=checkbox的<input>元素

$(':submit'); 所有type="submit'“的<input>元素

$(':reset'); 所有type="reset“的<input>元素

$(':buttom'); 所有type="buttom的<input>元素

$(':image'); 所有type="image“的<input>元素

$(':file'); 所有type="file的<input>元素

       3)属性值伪类选择器

$('p[class]'); 所有带有class属性的<p>元素  如:<p class="newClass"></p>

$('p[class="newClass"]'); 所class属性值为newClass的<p>元素

$('p[class!="newClass"]'); 所class属性值不为newClass的<p>元素

$('p[class^="new"]'); 所class属性值new开头的<p>元素

$('p[class$="new"]'); 所class属性值new结尾的<p>元素

4)标识元素状态的伪类选择器

$('div:visible'); 所有可见的div元素

$('div:hidden'); 所有隐藏的div元素

$('a:enabled'); 所有可以使用的a元素

$('a:disabled'); 所有不可用的a元素

$('select'),find(':selected'); 所有已选中的下拉框select

$(':animated'); 所有所有动画元素

5)其他伪类选择器

$("contains('www')"); 包含文本www的所有元素

$(':header') 所有标题元素<h1>-<h6>

$(':empty'); 无子节点的元素

$("li:has('ul')").css('backgroup-color','red'); 子孙后代中有ui的li元素的集合

6、伪类方法(jQuery为实现伪类一样效果提供的方法)

1)empty() 从DOM中删除所有匹配元素的子节点

       如$('p').empty(); 所有<p>元素的子节点都从DOM中删除

2)eq() 等效于伪类选择器:eq()  如$("li").eq(2).css('backgroud-color','red');

3)   end()  看例子:$("li").eq(2).css('backgroud-color','red').end().eq(1).css('width','800');

  等同于   $("li").eq(2).css('backgroud-color','red'); $("li").eq(1).css('width','800');

其中eq()有可能使用find(),filter(),not()过滤,缩小范围,然后通过end(),再返回大范围

       补充:filter() 去除符合条件字符串的元素 如 $("li").filter(':even').css('backgroud-color','red'); 

even:偶数,就是去除下标为偶数的元素,也就是选择奇数的元素

   find()  与filter()相反,筛选符合条件字符串的元素,$("li").find(':even').css('backgroud-color','red'); 

就是选择偶数元素

4)first()  如:$("li").first().css('backgroud-color','red'); 

5)  $("li").has('ul').css('backgroup-color','red'); 子孙后代中有ui的li元素的集合





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值