JQuery选择器

ID选择器
  • 一个用来查找元素的id属性
  • $( “#id” )
 <script type="text/javascript">
    	//通过jQuery直接传入id
    	//id的唯一,只选择到了第一个匹配的id为imooc的div节点
        $("#imooc").css("border", "3px solid red");
    </script>
  • 注意:
    (1)jQuery内部使用JavaScript函数document.getElementById()来处理ID的获取。
    (2)id是唯一的,每个id值在一个页面中只能使用一次。如果多个元素分配了相同的id,将只匹配该id选择集合的第一个DOM元素。但这种行为不应该发生;有超过一个元素的页面使用相同的id是无效的。
类选择器
  • 通过class样式类名来获取节点(可以多选)
  • $(".class")
 <script type="text/javascript">
        //通过jQuery直接传入class
        //class选择器可以选择多个元素
        $(".imooc").css("border", "3px solid red");
    </script>

  • 注意: 如果浏览器支持,jQuery使用JavaScript的原生getElementsByClassName()函数来实现的。
元素选择器
  • 根据给定(html)标记名称选择所有的元素

  • $(“element”)

  • 注意:
    (1)搜索指定元素标签名的所有节点,这个是一个合集的操作。
    (2)同样的也有原生方法getElementsByTagName()函数支持。

  • 同样的效果,$(“p”)选取所有的p元素,通过css方法直接赋予样式

<script>
$("p").css("border","red");//添加红色边框
</script>
  • divs是dom合集对象,通过循环给每一个合集中的div元素赋予新的border样式
<script>
var divs = document.getElementsByTagName('div);
//然后利用for循环进行一个一个遍历
for(var i=0;i<divs.length;i++){
	divs[i].style.border = "red";
}
</script>
全选择器
  • 通配符 * 意味着给所有的元素设置默认的边距。

  • $("*");

  • 注意:
    (1)搜索指定元素标签名的所有节点,这个是一个合集的操作。
    (2)抛开jQuery,如果要获取文档中所有的元素,通过document.getElementsByTagName()中传递"*"同样可以获取到.

  • 全选择器的兼容性的问题:

  • IE会将注释节点实现为元素,所以在IE中调用getElementsByTagName里面会包含注释节点,这个通常是不应该的

  • getElementById的参数在IE8及较低的版本不区分大小写

  • IE7及较低的版本中,表单元素中,如果表单A的name属性名用了另一个元素B的ID名并且A在B之前,那么getElementById会选中A

  • IE8及较低的版本,浏览器不支持getElementsByClassName

层次选择器

在这里插入图片描述

  • >(大于号)紧跟父子关系 如$(“div > p”)表示选择div下的子元素 p。

  • + (加号) 紧跟兄弟关系 如$(“div + p”)表示选择div同层的左右相邻的p节点(即div后面的第一个兄弟节点)。

  • ~ (波浪线)任意距离兄弟关系 如$(“div ~ p”)表示选择div同层的所有兄弟节点。

  •   (空格) 任意层父子关系 如$(“div p”)表示选择div下的所有p节点(不管中间隔多少层)。

  • ,   (逗号) 表示选择器组合,如$(“div p, span p”)表示div下p节点和span下p节点。


基本筛选选择器

在这里插入图片描述

  • 注意:
    (1):eq(), :lt(), :gt(), :even, :odd 用来筛选他们前面的匹配表达式的集合元素,根据之前匹配的元素在进一步筛选。
    (2)注意jQuery合集都是从0开始索引。
    (3)gt是一个段落筛选,从指定索引的下一个开始,gt(1) 实际从2开始。
  • (1) $ (“input:not(:checked)+p”).css(“background-color”, “red”);
    选择input中没有被选中的元素,然后找出这些元素的直接兄弟元素
    你把这个选择拆开看就好懂了:既可以看看$ (“input”)是什么效果,然后是$(“input:not(:checked)”)是什么效果,最后是 $(“input:not(:checked)+p”)是什么效果,一对比你就比较清楚了。
    (2) KaTeX parse error: Expected 'EOF', got '#' at position 30: ….css("color", "#̲CD00CD"); 查找di… (".div:first").css(“color”, “#CD00CD”);
内容筛选选择器

在这里插入图片描述

  • 基本筛选选择器针对的都是元素DOM节点
  • 注意:
    (1):contains与:has都有查找的意思,但是contains查找包含“指定文本”的元素,has查找包含“指定元素”的元素。
    (2)如果:contains匹配的文本包含在元素的子元素中,同样认为是符合条件的。
    (3):parent与:empty是相反的,两者所涉及的子元素,包括文本节点。
//查找所有class='div'中DOM元素中包含内容为"contains"的元素节点
 //并且设置颜色
$(".div:contains(':contains')").css("color", "#CD00CD");
 //查找所有class='div'中DOM元素中包含标签"span"的元素节点
 //并且设置颜色
  $(".div:has(span)").css("color", "blue");
可见性筛选选择器
  • 元素有显示状态与隐藏状态,jQuery根据元素的状态扩展了可见性筛选选择器:visible与:hidden
    在这里插入图片描述
  • :hidden选择器,不仅仅包含样式是display="none"的元素,还包括隐藏表单、visibility等等
  • 我们有几种方式可以隐藏一个元素:
  • CSS display的值是none。
  • type="hidden"的表单元素。
  • 宽度和高度都显式设置为0。
  • 一个祖先元素是隐藏的,该元素是不会在页面上显示
  • CSS visibility的值是hidden
  • CSS opacity的指是0
  • 如果元素中占据文档中一定的空间,元素被认为是可见的。
  • 可见元素的宽度或高度,是大于零。
  • 元素的visibility: hidden 或 opacity: 0被认为是可见的,因为他们仍然占用空间布局。
<script>
$(function(){
   $("#b1").click(function(){
     $("div:visible").hide();
   });
   $("#b2").click(function(){
      $("div:hidden").show();     
   });
});
         
</script>
  • 注意:
    不在文档中的元素是被认为是不可见的,如果当他们被插入到文档中,jQuery没有办法知道他们是否是可见的,因为元素可见性依赖于适用的样式.
属性筛选选择器
  • 属性选择器让你可以基于属性来定位一个元素。可以只指定该元素的某个属性,这样所有使用该属性而不管它的值,这个元素都将被定位,也可以更加明确并定位在这些属性上使用特定值的元素,这就是属性选择器展示它们的威力的地方。

在这里插入图片描述

  • 注意:
    (1)[attr=“value”]能帮我们定位不同类型的元素,特别是表单form元素的操作,比如说input[type=“text”], input[type=“checkbox”]等
    (2)[attr*=“value”]能在网站中帮助我们匹配不同类型的文件
    <script type="text/javascript">
         //查找所有div中,属性name=p1的div元素
         $("div[name=p1]").css("border", "3px groove red"); 
    </script>
 <script type="text/javascript">
        //查找所有div中,有属性name中的值只包含一个连字符“-”的div元素
        $("div[name='-']").css("border", "3px groove #00FF00"); 
    </script>
注意:当使用“”与‘’的时候,不能两对双引号或者两对单引号同时使用,应该交叉使用
<script type="text/javascript">
        //查找所有div中,有属性name中的值包含一个连字符“空”和“a”的div元素
        $('div[name~="a"]').css("border", "3px groove #668B8B"); 
    </script>
元素筛选选择器

在这里插入图片描述

  • 注意:
  • :first只匹配一个单独的元素, 但是:first-child选择器可以匹配多个:即为每个父级元素匹配第一个子元素。
    这相当于:nth-child(1)
  • :last 只匹配一个单独的元素,:last-child 选择器可以匹配多个元素:即为每个父级元素匹配最后一个子元素、
  • 如果子元素只有一个的话,:first-child与:last-child是同一个
  • :only-child匹配某个元素是父元素中唯一的子元素,就是说当前子元素是父元素中唯一的元素,则匹配
  • jQuery实现:nth-child(n)是严格来自CSS规范,所以n值是“索引”,也就是说,从1开始计数,:nth-child(index)从1开始的,而eq(index)是从0开始的
  • nth-child(n) 与 :nth-last-child(n) 的区别前者是从前往后计算,后者从后往前计算
<script type="text/javascript">
        //查找class="first-div"下的第一个a元素
        //针对所有父级下的第一个
        $('.first-div a:first-child').css("color", "#CD00CD");
    </script>
表单元素选择器

在这里插入图片描述

  • 获取到某个类型的表单元素
  • 注意:
  • 除了input筛选选择器,几乎每个表单类别筛选器都对应一个input元素的type值。
  • 大部分表单类别筛选器可以使用属性筛选器替换。比如 $(’:password’) == $(’[type=password]’)
    <script type="text/javascript">
        //查找所有 input, textarea, select 和 button 元素
        //:input 选择器基本上选择所有表单控件
        $(':input').css("border", "1px groove red"); 
    </script>
表单对象属性筛选选择器
  • 表单对象选择器 指的是选中form下会出现的输入元素

  • 可以附加在其他选择器的后面,主要功能是对所选择的表单元素进行筛选 在这里插入图片描述

  • :input 会选择所有的输入元素,不仅仅是input标签开始的那些,还包括textarea,select和button

  • :button 会选择type=button的input元素和button元素

  • :radio 会选择单选框

  • :checkbox会选择复选框

  • :text会选择文本框,但是不会选择文本域

  • :submit会选择提交按钮

  • :image会选择图片型提交按钮

  • :reset会选择重置按钮

  • 注意:

  • 选择器适用于复选框和单选框,对于下拉框元素, 使用 :selected 选择器

  • 在某些浏览器中,选择器:checked可能会错误选取到元素,所以保险起见换用选择器input:checked,确保只会选取元素

注意::前面要加上查找的实体
  <script type="text/javascript">
         //查找所有input所有勾选的元素(单选框,复选框)
         //移除input的checked属性
        $("input:checked").removeAttr('checked')
    </script>
特殊选择器this
  • this是JavaScript中的关键字,指的是当前的上下文对象,简单的说就是方法/属性的所有者。

  • 在javascript中使用:

  • imooc是一个对象,拥有name属性与getName方法,在getName中this指向了所属的对象imooc

var imooc = {
    name:"慕课网",
    getName:function(){
        //this,就是imooc对象
        return this.name;
    }
}
imooc.getName(); //慕课网
//在JavaScript中this是动态的,也就是说这个上下文对象都是可以被动态改变的(可以通过call,apply等方法)
  • 在DOM中使用:
  • his就是指向了这个html元素对象,因为this就是DOM元素本身的一个引用:
  • 假如给页面一个P元素绑定一个事件:
p.addEventListener('click',function(){
    //this === p
    //以下两者的修改都是等价的
    this.style.color = "red";
    p.style.color = "red";
},false);
//通过addEventListener绑定的事件回调中,this指向的是当前的dom对象,
//所以再次修改这样对象的样式,只需要通过this获取到引用即可
 this.style.color = "red";//但是要考虑到浏览器的兼容模式
 
/*addEventListener()绑定事件的对象方法。addEventListener()含有三个参数,一个是事件名称,另一个是事件执行的函数,最后一个是事件捕获,obj.addEventListener("click",function(){},true/false);
以往的方法定义事件的话后面的会覆盖掉前面的事件函数,但是按这种方式写的话几个事件函数都会执行,最后是true和false的解释,事件在执行时都会有俩个流,一个是捕获事件流,另一个是冒泡事件流,进来的事件是捕获事件,出去的事件是冒泡事件,true的话会捕获进来时的,false的话会捕获出去时的*/


  • 在JQuery中使用:
  • 通过把$()方法传入当前的元素对象的引用this,把这个this加工成jQuery对象,我们就可以用jQuery提供的快捷方法直接处理样式了
$('p').click(function(){
    //把p元素转化成jQuery的对象
    var $this= $(this) 
    $this.css('color','red')
})
  • 注意:
  • this,表示当前的上下文对象是一个html对象,可以调用html对象所拥有的属性和方法。
  • $(this),代表的上下文对象是一个jquery的上下文对象,可以调用jQuery的方法和属性值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值