jQuery——JavaScript流行的类库


jQuery的优点

核心理念:写的更少,做的更多。(write less,do more)。

轻量级,标准版和mini版,mini版简化了函数的名称,减小了源码的大小。

语法便捷,可提高开发效率。

不用在html中插入一堆js来调用命令了,只需要定义id即可。

网上有很多优秀的插件可以选择(12306的日历就是一个)。

jQuery对象

    jQuery对象就是通过jQuery包装DOM对象后产生的对象。    但是需要注意:jQuery对象虽然是包装DOM对象产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不调用jQuery的方法。

DOM对象转为jQuery对象

    var user = document.getElementById("username");//获取DOM对象

    var $username = jQuery(user);//通过DOM对象获取jQuery对象,jQuery对象变量名建议使用$***

jQuery对象转为DOM对象

    var $user = jQuery("#username"); //通过选择器获取jQuery对象

    var user = $user[0];//jQuery对象是一个数组对象,获取数组的第一个索引的值即是DOM对象

引入jQuery库

    <script type="text/javascript" src="jQuery的js文件位置"></script>

    注意:

            ①引入库不能再body标签以内或者以后,jQuery的文件位置一般采用相对寻址,不含有中文的路径。对于不同文件夹中,src="../jQuery库所在文件夹名/jQuery文件名.js"。

             ②导入的这个script标签中不能写代码,需要新建一个新的script标签才能写代码。

    

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
  <head>
    <title>获取jQuery对象.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
	<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
  </head>
  
  <body>
    <input type="text" value="mlgg" id="username" />
    
    <script type="text/javascript">
    	//js执行时有加载顺序,所以我们把script标签放在body中而不是head中(看补充内容)
    	/*	jQuery获取数据:
    	 *	语法:$("选择器") 和jQuery("选择器")  相同
    	 */
    	//获取jQuery对象
    	var username = $("#username") ;
    	username.val(); //获取username的value值
    	
    	//通过JavaScript获取value值
    	var usernameDOM = document.getElementById(username) ;
    	var usernameDOM_value = username.value ;
    	//将DOM对象转换为jQuery对象
    	var $username = $(usernameDOM) ;
    	//将jQuery对象转换为DOM对象
    	//jQuery对象内部可以以数组的形式存放所有数据
    	//方法一:
    	var usernameDOM2 = $username[0] ;//这里因为只有一个input标签,所以这里0指的就是这个标签
    	//方法二:
    	var usernameDOM3 = $username.get(0) ;
    </script>
  </body>
</html>
    补充:在实际开发中,常常把script标签写在head中,在JavaScript中调用window.onload() = function(){...}来确保加载完毕。而在jQuery中加载我们使用$(document).ready(function(){...});

   选择器

jQuery提供的强大选择器,分为:

1、基本选择器

2、层次选择器

3、基本过滤选择器

4、内容过滤选择器

5、可见度过滤选择器

6、属性选择器

7、子元素选择器

8、表单选择器

9、表单对象属性选择器


 基本选择器

    #id , id选择器,<xxx id=""> 通过id值获得元素

    element , 标签选择器 , <xxx>通过标签名获取元素

    .class , 类选择器 , <xxx class="">通过class值获得元素

    s1 , s2 , ... 多选择器 , 将多个选择器加在数组中

    * 通用选择器 , 获取所有东西

 层次选择器

   层级:

    ancestor descendant     A   B , 获取A元素内部所有的B后代元素(爷孙关系,获取的是所有的后代)

    parent > child                A>B  ,   获取A元素内部所有的B子元素(父子关系)

    prev + next                    A+B  , 获取A元素后面的第一个兄弟B元素(兄弟关系)

    prev ~ siblings               A~B  ,   获取A元素后面的所有的兄弟B元素(多兄弟关系)

过滤选择器

格式:     ":关键字"

:first    第一个

:last    最后一个

:eq(index)    获取指定索引的

:gt(index)    大于指定索引的

:lt(index)    小于指定索引的

:even    偶数索引的    例如:查找表格1,3,5行,索引是0,2,4。

:odd    奇数索引的

:not(selector)    去除所有与指定选择器匹配的元素

:header    获得所有标题元素<h>

:animated    获得所有动画的

:focus    获得焦点的    

    过滤选择器的问题:有很多input标签,包括文本,按钮......现在要选中所有的按钮的input,怎么选?

        方法一:$('input[type="button"]')可以获取类型为button的input

                 绑定事件:       $('input[type="button"]').blur(这里写一个失去焦点的函数).focus(这里写一个得到焦点的函数)

        方法二:使用jQuery的on()函数进行绑定:

                       $("input[type='button']").on("blur focus",function(){   });这种将事件并列写的方法可以使定义的函数同时适用于blur和focus两个事件,典型应用就是文本框提示字符的消失与出现。

内容选择器

:empty    当前元素是否为空(是否有标签体--子元素、文本)

:has(...)    当前元素是否含有指定元素

:parent    当前元素是否是父元素

:contains(text)    标签体是否有指定的文本

属性选择器

[属性名]    获得终极哦东的属性名元素

[属性名=值]    获得属性名    等于     指定值的    元素

[属性名!=值]    获得属性名    不等于    指定值的    元素

[属性名^=值]    获得以属性值    开头的    元素

[属性名$=值]    获得以属性值    结尾的    元素

[属性名*=值]    获得    含有属性值的    元素 

[as1][as2][as3]...    复合选择器,多个条件同时成立 

子元素过滤器

:nth-child    获得指定索引的孩子,从1开始。

:first-child    获得第一个孩子

:last-child    获得最后一个孩子

:only-child    获得独生子

表单过滤器

:input    所有表单元素。(<input>/<select>/<textarea>/<button>)

:text    文本框<input type="text">

:password    密码框<input type="password">

:radio    单选<input type="radio">

:checkbox    复选框<input type="checkbox">

:submit    提交按钮<input type="submit">

:image    图片按钮<input type="image" src="">

:reset    重传按钮<input type="reset">

:button    所有普通按钮<button> 或<input type="button">

:file    文件上传<input type="file">

:hidden    隐藏域<input type="hidden">,还可以获得<xxx style="display:none">

表单对象过滤器

:enable    可用

:disabled    不可用。<xxx disabled="disabled">    或    <xxx disabled>

:checked    选中(单选框radio、复选框checkbox)

:selected    选择(下拉列表 select option)

可见性过滤器

:hidden    隐藏。特指 <xxx style="display:none;"> , 获得 <input type="hidden">

:visible    可见(默认)


筛选

    选择器能提供的功能,筛选提供相应的函数。例如选择器    :first    筛选提供    first()函数。

为什么选择器提供的功能,筛选还要再来一遍?

    对比一下:$("div:first")    直接获得第一个div(永远只能操作第一个)

                     $("div").first()    先获得所有div,再筛选出第一个(可以操作第一个,也可以操作所有)

过滤

    eq(index|-index)    类似于eq(),强于eq()

            说明:index表示从0开始获得正向索引的元素

                      -index表示从-1开始获得反向索引的元素

    first()    第一个    和    :first一样

    last()    最后一个    和    :last一样

    is()    判断条件是否成立,成立返回true,不成立返回false

    hasClass(class)    判断是否是指定class    其实底层相当于 is("."+class)

    filter()    筛选出与指定表达式匹配的元素的集合

    not()    将制定内容删除

----------------------下面是不常用的-------------------------------

    has()    是否有子元素

    silce(start , end)    数组中截取元素,jQuery对象相当于是数组     含start不含end

    map()    将jQuery对象数组打散成一个一个的jQuery对象数组

查找

  这是一个演示标签案例:

<A>

       <B>

              <C></C>

              <D></D>

              <E></E>

              <F></F>

       </B>

</A>



  B.children([...])    获得所有子元素的集合 。   CDEF

  A.find(D)    从指定区域开始查找指定元素。D

  D.next()    D的下一个指定兄弟。E

  D.nextAll()    D后面的所有兄弟。EF

  E.prev()    E的上一个兄弟。D

  E.prevAll()    E前面的所有兄弟。DC

  E.siblings()    E的所有兄弟的。CDF

  E.parent()    E的父元素。B

  E.closest(A)    参数必须有,E向上找指定父元素A(含自己),如果有返回一个对象,如果没有返回0。

----------------------------下面的不常用--------------------------------------

C.nextUtil(E)    从C开始获得所有兄弟,找到E停下。DE

F.prevUtil(D)    从F开始获取所有兄弟,找到D停下。DE

E.parents()    获得E的所有父元素,没有的话返回0。AB

  closest和parents的主要区别是:

1,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找;

2,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用给定的选择器表达式去过滤;

3,前者返回0或1个元素,后者可能包含0个,1个,或者多个元素。

串联

将多条语句改成一条,只是为了方便操作。

add()        组合对象

    A.add(B)    将A和B组合一个对象,功能类似于$("A,B"),但是可以单独对A操作。

andSelf()    将之前操作添加到操作集合中

    A.children().andSelf()    A的所有孩子并且包含自己    

end()      回到最近一个“破坏性”操作之前

  A.children().children().end().end()

  A  A的孩子   A的孙子  A的孩子  A

constents()    获取所有子节点(子元素和文本)

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>QQ好友列表</title>
		<script type="text/javascript" src="js/jquery-1.8.3.js"></script>
		<script>
			$(document).ready(function(){
				//1所有分组列表项默认都是隐藏的。
				//2 分组(span)可以点击,控制下面的列表项显示或隐藏
				//3 当前分组列表项显示,其他分页隐藏(同时只有一个显示)
				$("div").children("a").hide().prev("span").click(function(){
				//↑所有div标签的孩子a隐藏,a的前一个span绑定点击事件
					$(this).nextAll("a").toggle().parent().siblings("div").find("a").hide();
					//↑当前span的所有a兄弟切换选中隐藏状态,a的父亲div的所有兄弟中查找a元素隐藏起来。toggle控制隐藏显示的切换。
				});
			});
		</script>
		<style type="text/css">
			div * {
				display: block;
				width: 200px;
			}
			
			div span {
				background-color: #0f0;
			}
		</style>
	</head>

	<body>
		<div>
			<span>分组一</span>
			<a>张三</a>
			<a>李四</a>
			<a>王麻子</a>
		</div>
		<div>
			<span>分组二</span>
			<a>sugarcane</a>
			<a>ALOHA</a>
			<a>malaganguo</a>
		</div>
		<div>
			<span>分组三</span>
			<a>我</a>
			<a>爱</a>
			<a>你</a>
		</div>
	</body>

</html>

爱哎

猜你喜欢

转载自blog.csdn.net/weixin_38930706/article/details/80917821