jQuery学习
注:博客内容并不是那么全面,了解更多请点击这里!
jQuery入门
- 什么是jQuery?
jQuery可以说是Javascript的一个框架,也可以说是JavaScript的函数库,封装了大量的方法 - JQuery和DOM的要点
jQuery和DOM对象不可以直接调用进行使用,但是可以通过内部的机制进行对象之间的转换 - 导入jQuery库(jquery-1.12.4.js)
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.12.4.js"></script>
- jQuery的使用(三种方式)
注意:为方便使用,$符号是jQuery中代替jQuery对象的符号
<script type="text/javascript"> // 第一种 $(function(){ }); // 第二种 jQuery(function(){ }); // 第三种 window.jQuery(function(){ }); </script>
- dom对象和jQuery对象的相互转换
<script type="text/javascript"> <!-- dom转jQuery对象 --> $(function(){ // 得到dom对象 var dom_uname = document.getElementById("username"); alert(dom_uname.value); // 转换 var jquery_uname = $(dom_uname); alert(jquery_uname.val()); }); </script>
<script type="text/javascript"> <!-- jQuery转dom对象 --> $(function(){ // 得到jQuery对象 var jquery_uname = $('#username'); alert(jquery_uname);//[object Object] alert(jquery_uname.val()); // 转换(jQuery对象实质为数组对象,存的是dom对象) var dom_uname = jquery_uname[0]; alert(dom_uname.value); }); </script>
选择器
案例:
<body>
<div>
<input type="text" class="class_username" id="id_username" value="zhangsan"/>
<input type="text" class="class_username" id="id_username" value="lisi"/>
</div>
<input type="text" id="id_password" value="123456"/>
<input type="text" id="id_password" value="654321"/>
</body>
- id选择器
<script type="text/javascript"> $(function(){ alert($('#id_username').length);// 1 alert($('#id_username').val());// zhangsan }); </script>
- class选择器
<script type="text/javascript"> $(function(){ alert($('.class_username').length);// 2 // 注意:不指定取数组中那个数据,默认为第一个 alert($('.class_username').val());// zhangsan // 取数组中的第二个数据,过程:jquery->dom->jquery alert($($('.class_username')[1]).val()); }); </script>
- element选择器
<script type="text/javascript"> $(function(){ alert($('input').length);// 4 alert($('input').val());// zhangsan }); </script>
- parent > child选择器
<script type="text/javascript"> // 得到给定元素的所有给定子元素 $(function(){ alert($('div > .class_username').length);// 2 }); </script>
- prev + next选择器
<script type="text/javascript"> // 得到给定元素的下个元素 $(function(){ alert($('.class_username + #id_username').length); alert($('.class_username + #id_username').val()); alert($('div + #id_password').val()); }); </script>
- prev ~ siblings选择器
<script type="text/javascript"> // 得到给定元素之后的所有指定元素 $(function(){ alert($('div ~ #id_password').length);// 2 }); </script>
- 简单过滤选择器(如:odd,even,first,last等),有兴趣可以了解点击
- 属性选择器
案例:
<body>
<div id="div1" class="class_div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
<div class="div4">div4</div>
<input type="text" id="input_letter"/>
</body>
<script type="text/javascript"> $(function(){ // 查询所有含id属性的div标签 alert($('div[id]').length);//3 // 查询含有class属性且值等于指定值的div标签 alert($("div[class='class_div1']").length);//1 // 不等于 alert($("div[class!='class_div1']").length);//3 // 查询id值为div开头的标签 alert($("div[id^='div']").length);//3 // 查询id值以letter结尾的input标签 alert($("input[id$='letter']").length);//1 // 查询id值包含iv的div标签 alert($("div[id*='iv']").length);//3 }); </script>
属性操作
- val属性操作
<body>
<input type="text" class="acount" id="username" value="zhangsan"/><br>
<input type="text" class="acount" id="password" value="123456"/>
</body>
<script type="text/javascript"> $(function(){ // 得到value值 alert($('#username').val()); // 设置值 $('#username').val("lisi"); }); </script>
- html&text属性
<body>
<div id="div1"><a href="#">div1</a></div>
</body>
<script type="text/javascript"> $(function(){ // 得到值 alert($("#div1").text());//div1 alert($("#div1").html());//<a href="#">div1</a> // 设置值 $("#div1").text("new set text"); alert($("#div1").text()); // 自动编译 $("#div1").html("<font color='red'>new set html<font>"); alert($("#div1").text());//new set html alert($("#div1").html());//<font color='red'>new set html<font> }); </script>
- class属性
<style type="text/css"> .style1{ background-color: red; } .style2{ background-color: blue; } .style3{ background-color: yellow; } .style4{ color: white; } </style>
<body>
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
</body>
<script type="text/javascript"> $(function(){ $('#div1').addClass('style1'); // 添加不同的css $('#div2').addClass('style2 style4'); $('#div3').addClass('style3'); // 移除css $('#div2').removeClass('style2'); // 若存在添加,不存在移除 $('#div2').toggleClass('style2'); }); </script>
- attr属性
<body>
<a id="a0" href="https://www.google.com">this is google</a>
<a id="a1">this is youtube</a>
<a id="a2">this is baidu</a>
</body>
<script type="text/javascript"> $(function(){ // 得到某个属性的值 alert($('#a0').attr('href'));// https://www.google.com // 设置某个属性的值(可以设置多个属性值,用逗号分割每个属性) $('#a1').attr({href:'https://www.youtube.com/'}); // 设置某个属性的值 $('#a2').attr('href','https://www.baidu.com/'); }); </script>
文档处理_1(元素内部)
案例:
<body>
<p style="color: red">文本</p>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
<div id="div4"></div>
</body>
- append():向每个匹配的元素内部追加内容。
<script type="text/javascript"> $(function(){ <!-- 下面这些都是在元素内部进行操作中 --> // 向每个匹配的元素内部追加内容。 $('#div1').append("div1"); $('#div2').append("div2"); $('#div3').append("div3"); $('#div1').append("<a href='#'>我是div1后追加的链接</a>"); }); </script>
- appendTo():把所有匹配的元素追加到另一个指定的元素元素集合中。
<script type="text/javascript"> $(function(){ <!-- 下面这些都是在元素内部进行操作中 --> // 向每个匹配的元素内部追加内容。 $('#div1').append("div1"); $('#div2').append("div2"); $('#div3').append("div3"); $('#div1').append("<a href='#'>我是div1后追加的链接</a>"); // 把所有匹配的元素追加到另一个指定的元素元素集合中。 $('p').appendTo('#div3'); }); </script>
- prepend():向每个匹配的元素内部前置内容。
<script type="text/javascript"> $(function(){ <!-- 下面这些都是在元素内部进行操作中 --> // 向每个匹配的元素内部追加内容。 $('#div1').append("div1"); $('#div2').append("div2"); $('#div3').append("div3"); $('#div1').append("<a href='#'>我是div1后追加的链接</a>"); // 把所有匹配的元素追加到另一个指定的元素元素集合中。 $('p').appendTo('#div3'); // 要插入到目标元素内部前端的内容 $('#div1').prepend("我要加到div1前边<br>"); }); </script>
- prependTo():把所有匹配的元素前置到另一个、指定的元素元素集合中。
<script type="text/javascript"> $(function(){ <!-- 下面这些都是在元素内部进行操作中 --> // 向每个匹配的元素内部追加内容。 $('#div1').append("div1"); $('#div2').append("div2"); $('#div3').append("div3"); $('#div1').append("<a href='#'>我是div1后追加的链接</a>"); // 要插入到目标元素内部前端的内容 $('#div1').prepend("我要加到div1前边<br>"); // $(A).prepend(B)的操作,即不是把B前置到A中,而是把A前置到B中。 $('p').prependTo('#div3'); }); </script>
文档处理_2 (元素外部&其它)
案例:
<body>
<p style="color: red">文本</p>
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
<div id="div4">div4</div>
</body>
- after():在每个匹配的元素之后插入内容。
<script type="text/javascript"> $(function(){ $('#div1').after("div1之后添加的!"); }); </script>
- before():在每个匹配的元素之前插入内容。
<script type="text/javascript"> $(function() $('#div4').before("div4之前添加的!"); }); </script>
- insertAfter():把所有匹配的元素插入到另一个、指定的元素元素集合的后面。
<script type="text/javascript"> $(function(){ $('#div1').after("div1之后添加的!"); $('#div4').before("div4之前添加的!"); // 将p标签添加到指定属性之后 $('p').insertAfter('#div2'); }); </script>
- insertBefore():把所有匹配的元素插入到另一个、指定的元素元素集合的前面。
<script type="text/javascript"> $(function(){ $('#div1').after("div1之后添加的!"); $('#div4').before("div4之前添加的!"); // 将p标签添加到指定属性之前 $('p').insertBefore('#div2'); }); </script>
- empty():删除匹配的元素集合中所有的子节点。
<script type="text/javascript"> $(function(){ $('p').empty(); }); </script>
- remove():从DOM中删除所有匹配的元素。
<script type="text/javascript"> $(function(){ // 注意:p标签一同移除!!! $('p').appendTo('#div1'); $("div[id='div1']").remove('#div1'); }); </script>
事件
注:事件较多,此处不详细介绍,有兴趣了解的点击
AJAX
注:这里只演示jQuery封装的相对来说最底层的方法($.ajax),想了解封装的其它方法请点击
案例:
<body>
<form id="form1">
<input type="text" id="username" name="username"/><br>
<input type="text" id="password" name="password"/><br>
<input type="button" id="btn" value="login">
</form>
</body>
<script type="text/javascript"> $(function(){ $('#btn').bind('click', function(){ // 获取表单数据 var i = $('#form1').serializeArray(); //alert(i); $.ajax({ // 请求链接 url: "user_login.action", // http方法 type: "POST", // 期待服务器返回的数据类型 dataType: "json", data: i, // 异步请求 async: true, // 成功后回调的方法 success: function(data){ alert(data.msg); }, // 失败后回调的方法(服务器故障) error: function(data){ al } }); }); }); </script>
package tqb.web.action;
import java.util.HashMap;
import java.util.Map;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import net.sf.json.JSONObject;
/** * 用户登录Demo * @author tqb * */
public class DemoAction extends ActionSupport {
public String login() throws Exception {
Map<String, String> map = new HashMap<String, String>();
try {
// 模拟服务器发生故障!!!
// System.out.println(1/0);
String username = ServletActionContext.getRequest().getParameter("username");
String password = ServletActionContext.getRequest().getParameter("password");
if (username != null && password != null && username.trim().equals("admin")
&& password.trim().equals("admin")) {
map.put("msg", "恭喜你登录成功!");
JSONObject jsonObject = JSONObject.fromObject(map);
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
ServletActionContext.getResponse().getWriter().print(jsonObject);
} else {
map.put("msg", "抱歉,登录失败!");
JSONObject jsonObject = JSONObject.fromObject(map);
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
ServletActionContext.getResponse().getWriter().print(jsonObject);
}
} catch (Exception e) {
map.put("msg", "抱歉,服务器发生故障!");
JSONObject jsonObject = JSONObject.fromObject(map);
ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
ServletActionContext.getResponse().getWriter().print(jsonObject);
e.printStackTrace();
}
return NONE;
}
}