jQuery学习第八课(ajax实例和插件编写模板及实例)
一、ajax实例
1.前端与程序员之间的数据约定
json(常用),text文本,xml
2.处理不同种类数据的方法
<script>
$(‘input‘).click(function(){
$.ajax({
//url:‘test.txt?‘+Math.random(),
url:‘demo1.php?‘+Math.random(),
type:‘get‘,
success:function(data){
$(‘div‘).html(data);
}
});
});
</script>
<script>
$(‘input‘).click(function(){
var ul = $(‘#info>ul‘);
$.ajax({
url:‘demo2.php?‘+Math.random(),
type:‘get‘,
dataType:‘xml‘,
success:function(xml){
$(xml).find(‘title‘).each(function(){
//操作xml文件时,html()方法不可用
//alert($(this).text())
ul.append(‘<li>‘+$(this).text()+‘</li>‘);
});
}
});
});
</script>
3.ajax执行时的提示
4.ajax中的细节(编码和提交方式)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>demo9</title>
<script src="jquery.js"></script>
</head>
<body>
<input type="button" value="获取数据" />
<div></div>
<span style="color:red"></span>
<script>
$(‘input‘).click(function(){
$.ajax({
url:‘demo9.php?‘+Math.random(),
type:‘get‘,
timeout:1000,
success:function(data){
$(‘div‘).html(data);
},
error:function(jqXHR,textStatus,errrorThrown){
if(errrorThrown==‘Not Found‘){
$(‘span‘).html(‘你请求的地址不存在‘);
}
if(textStatus==‘timeout‘){
$(‘span‘).html(‘请求超时,请刷新页面重新操作‘);
}
}
});
});
$(document).ajaxError(function(){
$(‘span‘).html(‘ajax请求发生错‘);
});
</script>
</body>
</html>
-----------------------------二、jquery插件编写---------------------------------
类级别开发
类级别开发就是给jquery添加静态方法
1)添加新的全局函数
jQuery.myAlert=function(str){alert(str);};
2)使用$.extend(obj)
jQuery.extend({
myAlert1:function(str){
alert(str);
},
myAlert2:function(){
alert(2222222);
}
});
3)使用命名空间
jQuery.ns={
myAlert:function(str){
alert(str);
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>demo1</title>
<script src="jquery.js"></script>
<script src="demo1.js"></script>
</head>
<body>
<input type="button" value="点击" />
<script>
// var a = ‘我是通过调用插件参数参数参数参数参数弹出的警告框‘
/*$(‘input‘).click(function(){
$.myAlert(a);
});*/
// var a = ‘我是通过extend()方法写的插件弹出的警告框‘
/*$(‘input‘).click(function(){
$.myAlert(a);
});*/
var a = ‘我是有命名空间的插件警告框‘
$(‘input‘).click(function(){
$.ns.myAlert(a);
});
</script>
</body>
</html>
实例二:将元素放在中心
-------------------------demo2.html--------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>demo2</title>
<style>
#div1{width: 150px;height: 150px;background: #f90;}
</style>
<script src="jquery.js"></script>
<script src="demo2.js"></script>
</head>
<body>
<div id="div1"></div>
<script>
/*var div = $(‘#div1‘);
div.css({
‘top‘:($(window).height()-div.height())/2,
‘left‘:($(window).width()-div.width())/2,
‘position‘:‘absolute‘
});*/
var div = $(‘#div1‘);
$.ns.centerDiv(div).css(‘background‘,‘red‘);
</script>
</body>
</html>
--------------------------demo2.js---------------------------
$.ns={
centerDiv:function(obj){
obj.css({
‘top‘:($(window).height()-div.height())/2,
‘left‘:($(window).width()-div.width())/2,
‘position‘:‘absolute‘
});
return obj;//如果没有这句,元素无法进行链式操作,demo2.html中的$.ns.centerDiv(div).css(‘background‘,‘red‘);将
报错,"Cannot call method ‘css‘ of undefined"
}
}
对象级别开发(常用)
给jquery对象添加方法
jquery插件开发模板:
;(function($){
$.fn.pluginName=function(options){
var defaults = {
//各种参数,各种属性
}
var options = $.extend(defaults,options);
this.each(function(){
//实现功能的代码
});
return this;
}
})(jQuery);
两个简单的插件实例:
----------------------------------------jquery-table-1.0.js----------------------------------
;(function($){
$.fn.table=function(options){
var defaults = {
//各种参数,各种属性
evenRowClass:‘evenRow‘,
oddRowClass:‘oddRow‘,
currentRowClass:‘currentRow‘,
eventType:‘mouseover‘,
eventType2:‘mouseout‘
}
var options = $.extend(defaults,options);
this.each(function(){
var _this = $(this);
//偶数行
_this.find(‘tr:even‘).addClass(options.evenRowClass);
//奇数行
_this.find(‘tr:odd‘).addClass(options.oddRowClass);
/*_this.find(‘tr‘).mouseover(function(){
$(this).addClass(options.currentRowClass);
}).mouseout(function(){
$(this).removeClass(options.currentRowClass);
});*/
_this.find(‘tr‘).bind(options.eventType,function(){
$(this).addClass(options.currentRowClass);
});
_this.find(‘tr‘).bind(options.eventType2,function(){
$(this).removeClass(options.currentRowClass);
});
});
return this;
}
})(jQuery);
1---------------------------------------table.html--------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//Dth XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/Dth/xhtml1-transitional.dth">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>table</title>
<style>
table{width: 100%;border: 1px solid #abcdef;border-collapse: collapse;}
th,td{height: 28px;border: 1px solid #abcdef;text-align: center;}
.evenRow1{background: #38a38a;}
.oddRow1{background:#09f;}
.currentRow1{background: yellow;}
</style>
<script src="jquery.js"></script>
<script src="jquery-table-1.0.js"></script>
<script>
$(function(){
$(‘#table1‘).table({
evenRowClass:‘evenRow1‘,
oddRowClass:‘oddRow1‘,
currentRowClass:‘currentRow1‘,
eventType:‘click‘
});
})
</script>
</head>
<body>
<!-- 需求:
开发一个插件:要求奇数行的颜色是#38a38a,偶数行的颜色是#09f,当鼠标移动到当前行的时候,当前行的颜色变成yellow,当鼠标移开时还是显示原来的颜色 -->
<table id="table1">
<tr>
<th>姓名</th>
<th>年龄</th>
<th>身高</th>
<th>体重</th>
</tr>
<tr>
<td>张三</td>
<td>22</td>
<td>187</td>
<td>70KG</td>
</tr>
<tr>
<td>李四</td>
<td>20</td>
<td>170</td>
<td>60KG</td>
</tr>
<tr>
<td>小四</td>
<td>30</td>
<td>148</td>
<td>40KG</td>
</tr>
<tr>
<td>张三</td>
<td>22</td>
<td>187</td>
<td>70KG</td>
</tr>
<tr>
<td>李四</td>
<td>20</td>
<td>170</td>
<td>60KG</td>
</tr>
<tr>
<td>小四</td>
<td>30</td>
<td>148</td>
<td>40KG</td>
</tr>
<tr>
<td>张三</td>
<td>22</td>
<td>187</td>
<td>70KG</td>
</tr>
<tr>
<td>李四</td>
<td>20</td>
<td>170</td>
<td>60KG</td>
</tr>
<tr>
<td>小四</td>
<td>30</td>
<td>148</td>
<td>40KG</td>
</tr>
<tr>
<td>张三</td>
<td>22</td>
<td>187</td>
<td>70KG</td>
</tr>
<tr>
<td>李四</td>
<td>20</td>
<td>170</td>
<td>60KG</td>
</tr>
<tr>
<td>小四</td>
<td>30</td>
<td>148</td>
<td>40KG</td>
</tr>
</table>
</body>
</html>
2-----------------------------------jquery.tab.1.0.js----------------------------------
;(function($){
$.fn.tab=function(options){
var defaults = {
//各种参数,各种属性
currentClass:‘current‘,
tabNav:‘.tabNav>li‘,
tabContent:‘.tabContent>div‘,
eventType:‘click‘
}
var options = $.extend(defaults,options);
this.each(function(){
//实现功能的代码
var _this =$(this);
_this.find(options.tabNav).bind(options.eventType,function(){
$(this).addClass(options.currentClass).siblings().removeClass(options.currentClass);
var index = $(this).index();
_this.find(options.tabContent).eq(index).show().siblings().hide();
});
});
return this;
}
})(jQuery);
-----------------------------------tab.html---------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>tab</title>
<script src="jquery.js"></script>
<script src="jquery.tab.1.0.js"></script>
<style>
*{padding: 0;margin: 0;}
body{margin: 50px;}
.tabNav1 {list-style-type: none;}
.tabNav1 li{float: left;width: 150px;height: 26px;line-height: 26px;text-align: center;margin-right: 3px;border: 1px solid #abcdef;border-bottom: none;cursor: pointer;}
.tabNav1 li.current1{background: #abcdef;color: #fff;font-weight: 700;}
.tabContent{clear: both;}
.tabContent div{border: 1px solid #abcdef;display: none;width: 500px;height: 200px;}
</style>
<script>
$(function(){
$(‘.tab‘).tab({
eventType:‘mouseover‘,
tabNav:‘.tabNav1>li‘,
currentClass:‘current1‘
}).find(‘.tabNav1>li‘).css(‘background‘,‘red‘);
})
</script>
</head>
<body>
<div class="tab">
<ul class="tabNav1">
<li class="current1">html</li>
<li>css</li>
<li>javascript</li>
</ul>
<div class="tabContent">
<div style="display:block">html</div>
<div>css</div>
<div>javascript</div>
</div>
</div>
</body>
</html>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。