Jquery基础知识(一)--选择器

jquery基础

jquery是一个javascript脚本框架,不需要特别安装,只需要在头标签中,通过script引入jquery库

<script type="text/javascript" src=“https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script>


$(document).ready作用是等页面文档中所有节点都加载完后再执行后续代码

1)jquery对象和dom对象

jquery与dom是不同的

通过dom模型提供的documen.getelementid(“imooc)方法获取dom元素就是一个dom对象

如果是jq的处理方式:
var $p = $(“#imooc”)获取一个$p的jquery对象,$p是一个类数组对象,包含dom对象的信息

发现:

1.通过jquery包装后的对象是一个类数组对象,与dom对象不同。唯一的共同点是都能操作dom

2.通过jquery处理dom,不需要知道dom节点有哪些方法

2)jquery转换成dom对象

var $div = $('div') //jQuery对象

var div = $div[0] //转化成DOM对象

div.style.color = 'red' //操作dom对象的属性


或者利用jq自带的get方法

var $div = $('div') //jQuery对象

var div = $div.get(0) //通过get方法,转化成DOM对象

div.style.color = 'red' //操作dom对象的属性


3)dom对象转换成jquery对象

通过$(参数)

如果参数是dom对象,jqhuiba这个dom对象转换成一个新的jq对象

var div = document.getElementsByTagName('div'); //dom对象

var $div = $(div); //jQuery对象

var $first = $div.first(); //找到第一个div元素

$first.css('color', 'red'); //给第一个元素设置颜色

dom就可以使用jq的方法了


jquey选择器

1)使用id查找

$(“#id”)

注意:id是唯一的,每个id在页面只使用一次,如果分配到相同的id,则选择器会自动选择第一个id

2)类选择器

$(“.class”)

效率较低,但可以多选

内部自带隐式循环处理

3)元素选择器

$(“element”)

搜索元素标签的所有节点,是一个合集操作

如果使用dom的方法查找,需要依次循环赋值

4)全选择器

$(“*”)

id,class,tag均可以通过原生方法得到对应的节点

5)层级选择器

用来处理子元素,后代元素,兄弟元素,相邻元素 



解析:

1) $('div > p’):所有div中的子元素p 意思就是只能是直接的下一层,不能是孙子层

子选择器:选择所有指定“parent”元素中指定的”child"的直接子元素。

2)$('div p’):所有div中的元素p 可以是儿子,孙子,曾孙子

后代选择器:选择给定的祖先元素的所有后代元素, 一个元素的后代可能是该元素的一个孩子,孙子,曾孙等

以下为同等级的

3)$(".prev + div”):prev后的第一个兄弟节点

相邻兄弟选择器:选择所有紧接在“prev”元素后的“next”元素

4)$(".prev ~ div”) :选择prev后的所有div兄弟节点

一般兄弟选择器:匹配“prev”元素之后的所有 兄弟元素。具有相同的父元素,并匹配过滤“siblings”选择器

6)基本筛选选择器 


$(“.div:first”):class是div的第一个元素

$(“.div:last”):class是div的最后一个元素

$(“.div:even”):class是div的偶数倍元素(从0开始)

$(“.div:odd”):class是div的基数元素

$(“.aaron:eq(2)”):class是aaron的第二个元素

$(“.aaron:gt(3)”):class是aaron的索引大于3的元素不包括3

$(“.aaron:lt(2)”):class是aaron的索引小于2的元素不包括2

$("input:not(:checked) + p”):input后的p标签但是不能有checked属性

以上所有都是筛选冒号前面的标签元素的条件


7)内容选择器

 


$(“.div:contains(‘:contains')"):查找文本中包含contains的div

$(“.div:has(span)”):查找div中包涵span标签的元素


:contains与:has都有查找的意思,但是contains查找包含“指定文本”的元素,has查找包含“指定元素”的元素


$(“a:parent”):查找包含所有包含子元素,或者文本的a标签

$(“a:empty”):找a下所有的空节点(没有子元素)


8)可见性筛选器

 


隐藏不仅仅是display:none,还包括隐藏表单


1 CSS display的值是none。

2 type="hidden"的表单元素。

3 宽度和高度都显式设置为0。

4 一个祖先元素是隐藏的,该元素是不会在页面上显示

5 CSS visibility的值是hidden

6 CSS opacity的指是0

$(‘#div1:visible’):选择id是div1的可见元素

$(‘#div3:hidden’):选择ID是div3的隐藏元素


9)属性筛选选择器 


解析:

 $(‘div[name=p1]’):查找所有div中那么属性是p1的


$(‘div[p2]'):查找所有div中有属性p2的


$(‘div[name|=“-“]’):查找所有div中只包含一个“-”的,如果双引号中间的是其他的value则表示,查找所有div中包含value+“-”的即以value为前缀,后跟一个“-”


 $(‘div[name~=“a”]'):查找所有div中name属性值为一个空格+“a”的


$(‘div[name^=imooc]'):查找所有div中name属性以imooc开头的


$(‘div[name$=imooc]'):查找所有div中name属性以imooc结尾的


$(‘div[name*=“test"]'):查找所有div中那么属性包含test的


$(‘div[testattr!=“true"]'):查找所有div中testattr属性不包含true的


10)子元素筛选选择器 



1 :first只匹配一个单独的元素,但是:first-child选择器可以匹配多个:即为每个父级元素匹配第一个子元素。这相当于:nth-child(1)

2 :last 只匹配一个单独的元素, :last-child 选择器可以匹配多个元素:即,为每个父级元素匹配最后一个子元素

3 如果子元素只有一个的话,:first-child与:last-child是同一个

4  :only-child匹配某个元素是父元素中唯一的子元素,就是说当前子元素是父元素中唯一的元素,则匹配

5 jQuery实现:nth-child(n)是严格来自CSS规范,所以n值是“索引”,也就是说,从1开始计数,:nth-child(index)从1开始的,而eq(index)是从0开始的

6 nth-child(n) 与 :nth-last-child(n) 的区别前者是从前往后计算,后者从后往前计算


$('.first-div a:first-child’):查找所有类名为first-div下的第一个a元素


$('.first-div a:last-child’):查找所有类名为first-div下的最后一个a元素


$('.first-div a:only-child’):查找类名为first-div的仅有一个子元素的a元素


$('.last-div a:nth-child(2)’):查找类名为last-div的第二个a元素


$('.last-div a:nth-last-child(2)’):查找类名为last-div的倒数第二个a元素


11)表单元素选择器

 





























$(‘:input’):选择所有input元素 包括text,button之类的


$(‘input:text'):选择所有text元素


$(‘input:password'):选择所有密码元素


$(‘input:radio'):选择所有单选元素


$(‘input:checkbox'):选择所有多选元素


$(‘input:submit'):选择提交元素


$(‘input:image'):选择图像元素


$(‘input:button'):选择按钮元素


$(‘input:file’):选择文件元素


12)表单对象属性筛选器 


$(‘input:enabled'):所有未被禁用的input元素


$(‘input:disabled'):所有已被禁用的input元素


$(‘input:checked’):input已被勾选的元素(单选或者多选)


$(‘option:selected’):option中被选择的元素


13)特殊选择器this

this是js中的关键字,指当前上下文对象,就是方法/属性的所有者

dom中的this指的是html元素对象,就是dom元素本身的引用

此处将this指向jq对象

$(this)表示上下文的jq对象,能够调用jq的方法和属性 



综合练习:

<div id="menu">

    <!--tag标题-->

    <div id="menu_female">

        <h3>女装</h3>

        <div class="tag" style="display: block;">

            <dl>

                <dd>

                    <p>第一类</p>

                    <a>1.衬衫</a>

                    <a>2.T恤</a>

                    <a>3.雪纺衫</a>

                    <a>4.针织衫</a>

                    <a>5.短外套</a>

                    <a>6.卫衣</a>

                    <a>7.小西裤</a>

                    <a>8.风衣</a>

                    <a>9.吊带背心</a>

                    <a>10.连衣裙</a>

                    <a name="setColor">11.蕾丝连衣裙</a>

                    <a>12.复古连衣裙</a>

                    <a>13.印花连衣裙</a>

                    <a>14.真丝连衣裙</a>

                    <a>更多</a>

                </dd>

            </dl>

        </div>

        <div class="tag_More" style="display:block">

            <dl>

                <dd>

                    <p>第二类</p>

                    <a>1.背带裤</a>

                    <a>2.哈伦裤</a>

                    <a>3.牛仔裤</a>

                    <a>4.休闲裤</a>

                    <a>5.小脚裤</a>

                    <a>6.西装裤</a>

                    <a>7.打底裤</a>

                    <a>8.阔脚裤</a>

                    <a>9.短裤</a>

                    <a>10.马甲/背心</a>

                    <a>11.羽绒服</a>

                    <a>12.棉服</a>

                    <a>13.夹克</a>

                    <a>14.POLO衫</a>

                    <a>更多</a>

                </dd>

            </dl>

        </div>>

    </div>

    <div id="menu_con">

        <h3>男装</h3>

        <div class="tag" style="display:block">

            <dl>

                <dd>

                    <p>第一类</p>

                    <a>1.衬衫</a>

                    <a>2.T恤</a>

                    <a>3.牛仔裤</a>

                    <a>4.休闲裤</a>

                    <a>5.短裤</a>

                    <a>6.针织衫</a>

                    <a>7.西服</a>

                    <a>8.西裤</a>

                    <a>9.嘻哈裤</a>

                    <a>10.西服套装</a>

                    <a>11.马甲/背心</a>

                    <a name="setColor">12.羽绒服</a>

                    <a>13.棉服</a>

                    <a>14.夹克</a>

                    <p>更多</p>

                </dd>

            </dl>

        </div>

        <div class="tag_More" style="display:block">

            <dl>

                <dd>

                    <p>第二类</p>

                    <a>1.衬衫</a>

                    <a>2.T恤</a>

                    <a>3.牛仔裤</a>

                    <a name='setColor'>4.休闲裤</a>

                    <a>5.短裤</a>

                    <a>6.针织衫</a>

                    <a>7.西服</a>

                    <a>8.西裤</a>

                    <a>9.嘻哈裤</a>

                    <a>10.西服套装</a>

                    <a>11.马甲/背心</a>

                    <a>12.羽绒服</a>

                    <a>13.棉服</a>

                    <a>14.夹克</a>

                    <p>更多</p>

                </dd>

            </dl>

        </div>>

    </div>

</div>


<script type="text/javascript">

    //找到男装下第一类衣服中的第一个p元素,并改变颜色

    //可以通过子类选择器  p:first-child 筛选出第一个p元素

    $('#menu_con .tag dd > p:first-child').css('color','#9932CC');

</script>


<script type="text/javascript">

    //找到男装下第一类衣服把a元素从顺序1-4加上颜色

    //可以通过基本筛选器lt,选择匹配集合中所有索引值小于给定index参数的元素

    //注意了index是从0开始计算,所以选在1-4,为对应的index就是4

   $('#menu_con .tag dd > a:lt(4)').css('color','red');

</script>


<script type="text/javascript">

    //找到男装所有a元素中属性名name="setColor"的元素,并设置颜色

    //这里用的属性选择器[attribute='value']选择指定属性是给定值的元素

   $('#menu_con dd > a[name="setColor"]').css('color','blue');

</script>


<script type="text/javascript">

    //不分男女,选中第一类衣服中第9个a元素,并改变颜色

    //这里用了nth-child 选择的他们所有父元素的第n个子元素

    $('.tag a:nth-child(10)').css('color','#66CD00');

</script>


<script type="text/javascript">

    //找到女装下第一类衣服,把a元素中包含文字"更多"的节点,改变颜色

    $('#menu_female div.tag a:contains("更多")').css('color','#C71585');

</script>


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值