jquery入门学习01

Posted sihai_1991

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery入门学习01相关的知识,希望对你有一定的参考价值。

一:什么是jQuery?为什么要使用jQuery? 

   1.jQuery是一个优秀的实用javascript库,内部封装了很多实现的函数和对象.

    2.jQuery是目标是:写少代码,做多事情,是相对于原始javascript+dom的方式而言.
    3.jQuery是开源的js实用库.
    4.jQuery分为min版和非min版,min版适合真正发布Web应用,非min版适合学习使用.
    5. jQuery在主流的浏览器中可以使用.
    6. jQuery能够做dom能做的一切事情.
    7. jQuery文档齐全,便用学习.
    8. 提倡对每个元素节点设置一个id属性.

    9. jQuery没有将所有的javascript进行封闭,jQuery只争对它所关注的领域进行封装.


二:jQuery的开发步骤?
       1.$username.val() vs value属性

       2.$username.html() vs innerHTML属性
       3.个人代码约束
        dom对象   inputElement  inputText

jquery对象   $input inputText

      4.开发步骤
        1)在需要使用jquery技术的页面中(html/jsp),通过<script>标签引用jquery库
        2)使用jquery常用API(重点)

代码实现(jQuery体验入门)

jquery.jsp:

<head>   
    <title></title>
    <!-- 引入js文件 -->
    <script type="text/javascript" src="js/jquery-1.8.2.js"></script> 
  </head>
  <body>
 	<input id="domID" type="button" value="dom的属性">
 	<input id="jqueryID" type="button" value="jquery的属性">
 	<div id="divID">哈哈</div>
  </body>
    <script type="text/javascript">
    	
    	//dom方式获取value的属性值
    	var inputElement = document.getElementById("domID");
    	var inputText = inputElement.value;
    	alert(inputText);
    	
    	//jquery方式获取value的属性值
    	var $input = $("#jqueryID");
    	var inputText = $input.val();
    	alert(inputText);
    	
    	//获取div的内容
    	var $div = $("#divID");
    	var divText = $div.html();
    	alert(divText);
    </script>

三:DOM对象和jQuery对象相互转换

   1)按照dom规则,通过javascript语法创建出来的对象,叫dom对象
   2)用jquery语法创建出来的对象,叫jquery对象。
   3)jquery对象是对dom对象的封装,dom中大部份属性,在jquery封装后,都变化了方法,更加符合OO的设计规则
   4)dom对象转成jquery对象 $(dom对象) 返回值:jquery对象
   5)jquery对象可以看作是一个封装dom对象的数组,如果只有一个dom对象的话,下标位于0处
    方式一:jquery对象[0]      返回值:dom对象

    方式二:jquery对象.get(0)  返回值:dom对象

Dom对象转换成jquery对象:

dom2jquery.jsp

<head>   
    <title></title>
    <script type="text/javascript" src="js/jquery-1.8.2.js"></script>
  </head>
  <body>
    	<input type="button" id="inputID" value="dom转成jQuery对象">
  </body>
  
  <script type="text/javascript">
  	//dom转成jQuery对象
  	//创建dom对象
  	var inputElement = document.getElementById("inputID");
  	//把dom对象转成jquery对象
  	var $input = $(inputElement);
  	//操作jQuery对象的API
  	var inputText = $input.val();
  		alert(inputText);
  	
  	//jQuery转成dom对象
  	var inputElement = document.getElementById("inputID");
  	var $input = $(inputElement);
  	var inputText = $input.val();
  	alert(inputText);
  </script>

jquery对象转成dom对象的二种方式:

<body>
    <div id="divID">hello jquery</div>
</body>
<script type="text/javascript">
  		//创建jquery对象
		var div1 = $("#divID");
		//jquery对象转成dom对象方法一
		var divElement = div1[0];
		var divText = divElement.innerHTML;
		alert(divText);
  </script>
<body>
    <div id="divID">hello jquery</div>
</body>
<script type="text/javascript">
		//jquery对象转成dom对象方法二
		var div2 = $("#divID");
		var divElement = div2.get(0);
		var divText = divElement.innerHTML;
		alert(divText);
  </script>

四:DOM操作与jQuery操作对错误的处理方式的比较    

jquery定位元素节点有三种方式:

方式一:通过id,例如:$("#divID") --------- > getElementById("divID")

方式二:通过标签名,例如:$("div")------------> getElementsByTagName("div")
方式三:通过样式名,例如:$(".oneClass")

代码体现如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>DOM操作与jQuery操作对错误的处理方式的比较</title>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<style type="text/css">
			.oneClass 
				font-size: 44px;
				color: red
			
		</style>
		<script type="text/javascript" src="js/jquery-1.8.2.js"></script>
	</head>
	<body>
		<input type="text" id="usernameID" value="[这就是jQuery]" />
		<div id="divID" class="oneClass">这是div中的内容</div>
		<script type="text/javascript">
  		//通过"#id"定位<input>
		//var $input=$("#usernameID");
		//var inputText=$input.val();
		//alert(inputText);
	  		
  		//通过"标签名"定位<input>
  		//var $input=$("input");
  		//var inputText=$input.val();
  		//alert(inputText);
  		
  		//通过"样式名"定位<div>
  		//var $div=$(".oneClass");
		//var divText=$div.html();
		//alert(divText);  <span style="font-family: Arial, Helvetica, sans-serif;">		</span>

<body>
   <input type="text" id="inputID" value="这是jQuery"/> 
   <div id="divID" class="oneClass">这是div中的内容</div>
  </body>
  
  <script type="text/javascript"> 
  	//dom错误处理和jquery错误处理
  		//dom错误处理
  		var inputID = document.getElementById("inputID");
  		if(inputID != null)
  			var inText = inputID.value;
  			alert(inText);
  		else
  			alert("查无此元素节点!");
  		
  		
  		//jquery错误处理
  		var inputElement = $("#inputID");
  		var inputText = inputElement.val();
  		//alert(inputText);
  		
  </script>

需要注意的是:jquery对象只能调用jquery对象的方法或属性,不能调用dom对象的方法或属性,反之一样。

五:jQuery九类选择器【在网页中获取你需要的节点(参见jQueryAPI.chm手册)】
1)基本选择器
$("#div1ID")
$("div")
$(".myClass")
$("div,span,p")  
$("#div1ID,.myClass,p")
<body>
   	<div id="div1ID">div1</div>
  	<div id="div2ID">div2</div>
  	<span class="myClass">span</span>
  	<p>p</p>
  </body>
  	<script type="text/javascript">
  		//1)查找ID为"div1ID"的元素个数
   		//alert($("#div1ID").size());
   		//alert($("#div2ID").size());
  		//2)查找DIV元素的个数(标签名大小写不敏感,但id属性值大小写敏感)
  		//alert($("div").size());
  	
  		//3)查找所有样式是"myClass"的元素的个数(标签名大小写不敏感,但class属性值大小写敏感)
  		//alert($(".myClass").size());
  		
  		//4)查找所有DIV,SPAN,P元素的个数
  		//alert($("div,span,p").size());
  		//5)查找所有ID为div1ID,CLASS为myClass,P元素的个数
		alert($("#div1ID,.myClass,p").size());
  	</script>


2)层次选择器

$("from input")祖先 后代
$("form>input")父亲 孩子
$("form+input")第一个兄弟
$("form~input")所有兄弟
<body>
  	<form>
		<input type="text" value="a"/>		
		<table>
			<tr>
				<td>
					<input type="checkbox" value="b"/>
				</td>
			</tr>			
		</table>
	</form>
	<input type="radio" value="a"/>
	<input type="radio" value="d"/>
	<input type="radio" value="e"/> 
  </body>
  
  <script type="text/javascript">
  	//1)找到表单form下[后代]所有的input元素的个数
		//alert($("form input").size());
		
  	//2)找到表单form下所有的子级[第一级孩子]input元素个数
  	    //alert($("form>input").size());
  	
  	//3)找到表单form同级[兄弟]第一个input元素的value属性值
  	   //alert($("form+input").val());
  	
  	//4)找到所有与表单form同级[兄弟]的input元素个数
  	     alert($("form~input").size());
  
  </script>

3)增强基本选择器
$("ul li:first")
$("ul li:last")
$(":checkbox:not(:checked)")找查所有未选中的复选框
$(":checkbox:checked")找查所有选中的复选框
$("table tr:even"),索引号为偶数
$("table tr:odd"),索引号为奇数
$("table tr:eq(0)",从0开始
$("table tr:gt(1)"
$("table tr:eq(1)"
$(":header")
<body>
   	<ul>
	    <li>list item 1</li>
	    <li>list item 2</li>
	    <li>list item 3</li>
	    <li>list item 4</li>
	    <li>list item 5</li>
	</ul>
	<input type="checkbox" checked/>
	<input type="checkbox" checked/>
	<input type="checkbox"/>
	<table border="1">
	  <tr><td>line1[0]</td></tr>
	  <tr><td>line2[1]</td></tr>
	  <tr><td>line3[2]</td></tr>
	</table>	
	<h1>h1</h1>
	<h2>h2</h2>
	<h3>h3</h3>
	<p>p</p>
	<script type="text/javascript">
	//1)查找UL中第一个元素的内容
	    //alert($("ul li:first").html());
	    
  	//2)查找UL中最后个元素的内容
		//alert($("ul li:last").html());	
  	
  	//3)查找所有未选中的input元素个数
  	    //alert($(":checkbox:not(:checked)").size());
  	
  	//4)查找表格的1、3、5...奇数行个数,索引号,从0开始
  		//alert($("table tr:even").size());
  	
  	//5)查找表格的2、4、6...偶数行个数,索引号,从0开始
  		//alert($("table tr:odd").size());
  	
  	//6)查找表格中第二行的内容,从索引号0开始
  	    //alert($("table tr:eq(1)").html());
  	
  	//7)查找表格中第二第三行的个数,即索引值是1和2,也就是比0大
  	    //alert($("table tr:gt(0)").size());
  	
  	//8)查找表格中第一第二行的个数,即索引值是0和1,也就是比2小
  	    //alert($("table tr:lt(2)").size());
  	
  	//9)给页面内所有标题<h1><h2><h3>加上红色背景色
  	    //$(":header").css("color","red");
  	
	</script>
    
4)内容选择器:
$("div:contains('John')")
$("p:empty")
$("div:has(p:has(span))") 
$("p:parent")
<script type="text/javascript" src="js/jquery-1.8.2.js"></script>
    <style type="text/css">
    	.myClass
    		font-size:44px;
    		color:blue
    	 
    </style>
  </head>
  <body>
	<div><p>John Resig</p></div>
	<div><p>George Martin</p></div>
	<div>Malcom John Sinclair</div>
	<div>J. Ohn</div>
	<p></p>
	<p></p>
	<div></div>
	<script type="text/javascript">
	
	//1)查找所有包含文本"John"的div元素的个数
		//alert($("div:contains('John')").size());
		
  	//2)查找所有p元素为空的元素个数
  	    //alert($("p:empty").size());
  	
  	//3)给所有包含p元素的div元素添加一个myClass样式
  	    // alert($("div:has(p:has(span))").size());
  	
  	//4)查找所有含有子元素或者文本的p元素个数,即p为父元素
  	    alert($("p:parent").size());
  	
	</script>

5)可见性选器
         $("table tr:hidden")
         $("table tr:visible")
<table border="1" align="center">
	  <tr style="display:none">
	  	<td>Value 1</td>
	  </tr>
	  <tr>
	  	<td>Value 2</td>
	  </tr>
	  <tr>
	  	<td>Value 3</td>
	  </tr>
	</table>
	<script type="text/javascript">
	//1)查找隐藏的tr元素的个数
	    //alert($("table tr:hidden").size());
	    //alert($("tr:hidden").size());
	    
  	//2)查找所有可见的tr元素的个数
  	    alert($("tr:visible").size());
	</script>
6)属性选择器
         $("div[id]")
         $("input[name='newsletter']")
         $("input[name!='newsletter']")
         $("input[name^='news']")
         $("input[name$='letter']")
         $("input[name*='letter']")
         $("input[id][name$='letter']")
<div>
	  <p>Hello!</p>
	</div>
	<div id="test2"></div>
	<input type="checkbox" name="newsletter" value="Hot Fuzz" />
	<input id="myID" type="checkbox" name="newsletter" value="Cold Fusion" />
	<input type="checkbox" name="newsaccept" value="Evil Plans" />
	<script type="text/javascript">
	//1)查找所有含有id属性的div元素个数
	    //alert($("div[id]").size());
	    
 	//2)查找所有name属性是newsletter的input元素,并将其选中
 	    //$("input[name='newsletter']").attr("checked","checked");
 	
  	//3)查找所有name属性不是newsletter的input元素,并将其选中
  	    //$("input[name!='newsletter']").attr("checked","checked");
  	
  	//4)查找所有name属性以'news'开始的input元素,并将其选中
  	    //$("input[name^='news']").attr("checked","checked");
  	
  	//5)查找所有name属性以'letter'结尾的input元素,并将其选中
  	    //$("input[name$='letter']").attr("checked","checked");
  	
  	//6)查找所有name属性包含'news'的input元素,并将其选中
  	    //$("input[name*='ws']").attr("checked","checked");
  	
  	//7)找到所有含有id属性,并且它的name属性是以"letter"结尾的,并将其选中
  	    $("input[id][name$='letter']").attr("checked","checked");
  	
	</script>

7)子元素选择器:
         $("ul li:first-child")
         $("ul li:last-child")  
         $("ul li:only-child")  
         $("ul li:nth-child(1)")从1开始
<ul>
	  <li>John</li>
	  <li>Karl</li>
	  <li>Brandon</li>
	</ul>
	<ul>
	  <li>Glen</li>
	  <li>Tane</li>
	  <li>Ralph</li>
	</ul>
    <ul>
	  <li>Jack</li>
	</ul>
	<script type="text/javascript">
	//1)迭代每个ul中第1个li元素中的内容,索引从1开始
	    //$("ul li:first")---size---1 
	    //$("ul li:first-child")size---3 
	    //$("ul li:first-child").each(function()
	    //		//此时this表示<li>元素节点
	    //		//将this这个dom对象转成jquery对象
	    //		alert($(this).html());
	    //	
	    //);
	    $("ul li:nth-child(2)").each(function()
	    	alert($(this).html());
	    );
	    
	     
 	//2)迭代每个ul中最后1个li元素中的内容,索引从1开始
 	    //$("ul li:last-child").each(function()
 	    //	alert($(this).html());
 	    //);
 	
 	//3)在ul中查找是唯一子元素的li元素的内容
 	    //$("ul li:only-child").each(function()
 	    //	alert($(this).html());
 	    //);
 	
 	
	</script>

8)表单选择器:
 $(":input")
         $(":text")
         $(":password")
         $(":radio")
         $(":checkbox")
         $(":submit")
         $(":image")
         $(":reset")
         $(":button")
         $(":file")
         $(":input:hidden")    
<form>
	    <input type="button" value="Input Button"/><br/>
	    <input type="checkbox" /><br/>
	    <input type="file" /><br/>
	    <input type="hidden" /><br/>
	    <input type="image" /><br/>
	    <input type="password" /><br/>
	    <input type="radio" /><br/>
	    <input type="reset" /><br/>
	    <input type="submit" /><br/>
	    <input type="text" /><br/>
	    <select><option>Option</option></select><br/>
	    <textarea></textarea><br/>
	    <button>Button</button><br/>
	</form>
	<script type="text/javascript">
	
	//1)查找所有input元素的个数
	    //alert($(":input").size());
	
  	//2)查找所有文本框的个数
  	    //alert($(":text").size()); 
  	
  	//3)查找所有密码框的个数
  	    //alert($(":password").size()); 
  	
  	//4)查找所有单选按钮的个数
  	    //alert($(":radio").size());
  		
  	//5)查找所有复选框的个数
  	 	//alert($(":checkbox").size());
  	
  	//6)查找所有提交按钮的个数
  	    //alert($(":submit").size());
  	
  	//7)匹配所有图像域的个数
  	    //alert($(":image").size());
  	
  	//8)查找所有重置按钮的个数
  	    //alert($(":reset").size());
  	
  	//9)查找所有普通按钮的个数
  	    //alert($(":button").size()); 
  	
 	//10)查找所有文件域的个数
 	     //alert($(":file").size());
 	
 	//11)查找所有input元素为隐藏域的个数
 	     //alert($(":input:hidden").size());
 	     alert($("input[type='hidden']").size());
	</script>

9)表单对象属性选择器:
         $("input:enabled")
         $("input:disabled")
         $(":checkbox:checked")
         $(":checkbox:not(:checked)")
         $("select option:selected")
         $("select option:selected")
<form>
	  <input name="email" disabled="disabled" />
	  <input name="password" disabled="disabled" />
	  <input name="id" />
	  <input type="checkbox" name="newsletter" checked="checked" value="Daily" />
	  <input type="checkbox" name="newsletter" value="Weekly" />
	  <input type="checkbox" name="newsletter" checked="checked" value="Monthly" />
		<select>
		  <option value="1">北京</option>
		  <option value="2" selected="selected">广州</option>
		  <option value="3">上海</option>
		</select>
	</form>
	<script type="text/javascript">
	
	//1)查找所有可用的input元素的个数
	    //alert($("input:enabled").size());
	
 	//2)查找所有不可用的input元素的个数
 	    //alert($("input:disabled").size());
 	
 	//3)查找所有选中的复选框元素的个数
 	    //alert($(":checkbox:checked").size());
 	
 	//4)查找所有未选中的复选框元素的个数
 	    //alert($(":checkbox:not(:checked)").size());
 	
 	//5)查找所有选中的选项元素的个数
 	    //alert($("select option:selected").size());
 	
 	//6)查找所有选中的选项元素的内容
 	    //alert($("select option:checked").html());
 	    //alert($("select option:selected").html());
 	    
	</script>

六:jQuery中常用方法(上)【在网页中操作需要的节点】
1)val():取得标签的value属性值

2)html():取得标签之间的文本值

<p>段落1</p>
  	<p>段落2</p>
  	<p>段落3</p>
  	<script type="text/javascript">
  		$("p").each(function()
  			//为每一个<p>元素节点添加单击事件
  			$(this).click(function()
  				//获取每一个<p>元素节点的内容
  				alert($(this).html());
  			)
  		);
  	</script>

3)size()或length:取得jquery对象的个数
4)css("background-color","red"):设置背景色

5)css("color","red"):设置前景色,即字体色

<table border="1" align="center">
		<tr>
			<th>用户名</th>
			<th>密码</th>
		</tr>
		<tr>
			<td>张三</td>
			<td>123456</td>
		</tr>
		<tr>
			<td>李四</td>
			<td>654321</td>
		</tr>
		<tr>
			<td>王五</td>
			<td>162534</td>
		</tr>
	</table> 
	<script type="text/javascript">
		$("table tr:first").css("background-color","pink");
		$("table tr:gt(0):odd").css("background-color","yellow");
		$("table tr:gt(0):even").css("background-color","blue");
	</script> 	

6)addClass("样式名")
7)attr("checked","checked")
8)each(函数)
9)click(函数)
<input type="checkbox" value="篮球"/>篮球
	<input type="checkbox" value="排球"/>排球	
	<input type="checkbox" value="羽毛球"/>羽毛球	
	<input type="checkbox" value="乒乓球"/>乒乓球
	
	
	
	<input type="button" value="选中的个数"/>
	<input type="button" value="迭代显示选中的value"/>
	<script type="text/javascript">
		$(":button:first").click(function()
			alert($(":checkbox:checked").size())
		);
		$(":button:last").click(function()
			$(":checkbox:checked").each(function()
				alert($(this).val());
			);
		);
	</script>






以上是关于jquery入门学习01的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 核心01

jquery快速入门

jQuery:后代选择器仅适用于一个“隐藏”的 div

使用 jQuery 获取不是具有特定 CSS 类的容器的子元素的元素的后代

jQuery系列教程

深入学习jQuery节点关系