对象命名方式
#
var $a = $("#inputID");
选择器(选择多个时形成数组)
#
基本选择器
$("#inputID"); # id选择
$("input"); // 标签名,默认获取第一个 # 标签名选择
$(".className"); // 按样式名定位 # 样式名选择
$("#div1ID,.myClass,p"); # 选择多个
$("*"); # 所有元素
层级选择器
$("form input") # form所有后代元素中input元素的个数
$("form>input") # form子元素中input元素个数,不包括下层元素
$("form+input") # form同级并且下面的第一个input元素
$("form~input") # form同级并且下面的所有input元素
子元素选择器 # 只选择一个
$("ul li:first") # ul中第一个子元素li
$("ul li:last") # ul中最后一个子元素li
$("input:not(:checked)") # input标签中所有未选中的元素
$("table tr:even") # 表格的奇数行(索引号为偶数)
$("table tr:odd") # 表格的偶数行(索引号为奇数)
$("table tr:eq(1)") # table中索引号等于1的行
$("table tr:gt(0)") # table中索引号大于0的行(不包括0)
$("table tr:lt(2)") # table中索引号小于2的行(不包括2)
$(":header") # 匹配如 h1, h2, h3之类的标题元素
内容选择器
$("div:contains('Join')") # div 标签的html()中包含'Join'字符串的元素
$("p:empty") # p 标签的html()的内容为空的元素
$("div:has(p)") # div标签中包含p标签的该div标签
$("p:parent"); # 非空的p标签元素,即p为父元素
可见性选择器
$("tr:hidden") # 查找隐藏的tr元素,如<tr style="display:none">
<td>Value 1</td>
</tr>
$("tr:visible") # 查找可见的tr元素
属性选择器
$("div[id]") # 含有id属性的div元素
$("input[name='newsletter']") # 所有name属性是newsletter的input元素
$("input[name!='newsletter']") # 所有name属性不是newsletter的input元素
$("input[name^='news']") # name以'news'开始的input元素
$("input[name$='leter']") # name 以'letter'结尾的input元素
$("input[name*='news']") # name包含'news'的input元素
$("input[id][name$='leter']") # 含有id属性,并且它的name属性是以"letter"结尾的input 元素
子元素选择器
$("ul li:first-child"); # 匹配多个ul中的第一个子li元素的li元素集合
$("ul li:last-child"); # 匹配多个ul中的最后一个子li元素的li元素集合
$("ul li:nth-child(1)"); # 匹配多个ul中的第一个子li元素的li元素集合,注意:标记从1开始(eq 从0开始)
$("ul li:only-child"); # 匹配多个ul中的只有一个li元素的li元素集合
表单选择器
$(":input"); # 所有input元素,包括select textarea button等
$(":text"); # 所有文本框
$(":password"); # 密码框
$(":radio"); # 单选框
$(":checkbox"); # 复选框
$(":submit"); # 提交按钮
$(":image"); # 有提交功能的图片
$(":reset"); # 重置按钮
$(":button"); # 按钮,包括<button></button>
$(":file"); # 文件域
$(":input:hidden"); # 隐藏域
表单对象属性
$(":input:enabled"); # 所有可用的input元素
$(":input:disabled") # 所有不可用的input元素
$(":checkbox:checked"); # 所有已选中的checkbox(有checked属性的)元素 $(":checkbox:not(:checked)"); 未选中的checkbox
$(":select option:selected"); # 所有已选中的option元素
基础函数
#
对象访问
size() # 同length,返回元素个数
length # 同size(),返回元素个数
get(index) # 取得一个匹配的元素,从0开始
each(function(){}); # 遍历调用该方法的元素数组中的元素,其中的this代表循环中的每一个元素
属性
val() # value属性的值,或option元素之间的值
val("") # 设置value的值
var(["Multiple2", "Multiple3"]); # 设置select 下option的值
html() # 相当于innerHTML ,同样不支持xml
attr("") # 查找属性
attr("checked","checked") # 设置checked属性的值为"checked"
removeAttr("align"); # 删除属性
样式类(css)
addClass("myClass"); # 添加 css 样式
removeClass("myClass"); # 删除样式
toggleClass("myClass"); # 切换样式,有变无,无变有
hasClass("myClass") # 返回是否有样式
筛选
#
过滤
eq(index) # 从0开始的第index元素
is(expr) # 判断元素中是否有符合expr的元素(如"form"),有则返回true,无则返回false
first() # 第一个元素
last() # 最后一个元素
filter(expr) # 筛选出符合表达式的集合
has(expr) # 保留符合expr的元素,去掉不符合的
not(expr) # 删除符合expr的元素,与has相反
查找
find(""); # 搜索所有与指定表达式匹配的后代元素
children() # 取得所有直接子元素,不包含后代
next() # 下一个同级兄弟
prev(); # 上一个同级兄弟
parent("") # 含着所有匹配元素的唯一父元素 ,可以用选择器筛选
parents("p") # $("span").parents("p") 每个span的所有是p元素的祖先元素
nextAll() # 之后所有同级兄弟
prevAll() # 之前所有同级兄弟
siblings() # 上下的所有同级兄弟
对象处理
replaceWith() # $("p").replaceWith("<b>Paragraph. </b>"); 替换p节点为自制的粗体节点
remove() # 自己删除自己
clone() # 复制自己 clone(true) 会复制行为
内部插入
append(content) # 元素内部之后添加元素,相当于appendChild()
prepend(content) # 元素内部之前添加元素
外部插入
after(content) # 元素同级之后插入
before(content) # 元素同级之前插入
事件函数
#
change(fn) # $("select").change(function(){}) dom 中的onchange事件,元素内容变化时触发
submit(fn) # $("form").submit(function(){}) 选中表单提交时触发,多用于简单检测输入
# 该事件函数中写return false;代表不提交表单
focus(fn) # $(":text").focus(); 将光标定位到input text表单中
select(fn) # 选中 如 $(function(){ $(":text").select(); $(":text").focus(); }) 页面加载时定位光标到input text文本域,并选中其中的文字
mouseover(fn)
mouseout(fn)
mousemove(function(e){}) # 鼠标移动时执行 ie 中已经定义参数,不用传递,直接用event,event.clientX,event.clientY分别得到鼠标的x,y坐标
keyup(fn) # ie 中 event.keyCode得到按键编码(firefox 中传递参数e,e.which得到按键编码)
ready(fn) # $(document).ready(fn) 相当于window.load()事件,但可以写多个
css函数
#
css("background-color","red"); # 设置style属性
addClass("myClass") # 添加css样式
removeClass("myClass") # 删除样式
toggleClass("myClass") # 切换样式,有则删除,无则添加
hasClass("myClass") # 是否有样式,返回true或false
效果函数
#
slideUp(speed,fn) # 向上滑动,如$("div").slideUp(200);
slideToggle(speed,fn) # 滑上滑下切换,如$("div").slideToggle(200);
show(speed,fn) # 元素从无到有动画显示出来
hide(speed,fn) # 元素从有到无隐藏起来
toggle(speed,fn) # 有则无,无则有隐藏、显示元素
fadeIn(speed,fn) # 淡入显示图片
fadeOut(speed,fn) # 淡出隐藏图片
animate(styles,speed,easing,callback) # 自定义动画。只有数字值可创建动画(比如 "margin:30px")
工具函数
#
$.trim(str) # 去除str字符串开头和结尾的空白
其它函数
#
serialize() # 序列表单内容为字符串 ajax提交表单时可以 var sendData = $("form").serialize(); 给sendData赋值传递表单信息
特殊使用
#
$(document) # 得到document区 ,可以定义事件,如$(document).mousemove(fn);
$(document).ready(fn); 相当于$(fn)
$(fn) # 相当于window.load ,在页面加载时执行,可以写多个,(而window.load只能一个生效,后面的会覆盖前面的)
$("<div id='2013'>ss</idv>"); # 创建一个元素
与dom之间的转换
#
var $input = $(inputElemenet); // 注意,没有双引号
var inputElement = $input.get(0); // jquery相当于存储了dom对象的数组
var inputElement = $input[0];
ajax
#
load(url) # $("span").css("color","red").load(url) 无参以get方式提交,返回的值直接作为<span>标签内的文本节点值
load(url,sendData); # 有参以post的方式提交
## var sendData = {"username":"user","password":"psw"}; sendData的内容用json的语法写
load(url,sendData,function(backData,textStatus,ajax){}); # 加上处理返回值的函数,服务器返回数据时调用此函数
## 其中backData是返回的字符串,textStatus是响应头状态码的值对应的信息(success代表200),ajax是ajax引擎对象
## <span>标签的文本节点的值仍会被改变
## 可以只写一个参数:backData,参数的名字可以任意更改
$.get(url,sendData,function(backData,textStatus,ajax){}); # 用get方式提交ajax模拟的表单
$.post(url,sendData,function(backData,textStatus,ajax){}); # 用post方式提交ajax模拟的表单 响应头 content-type = "application/x-www-form-urlencoded" 会自动设置好
插件
#
jquery提供
fixedtableheader
tablesort
tools
ui
hashchange
控制浏览器的前进后退到一个页面中(不必刷新)
easing
jquery的动画扩展, 比如动画执行的速度曲线
代码
icanhaz
mustache
功能
fileupload
treeview
文件
jquery.treeview.js # treeview插件简化板
jquery.treeview.edit.js # 可编辑的菜单
jquery.treeview.css # treeview可选使用的样式
使用
$("#root").treeview({ # $("#root")是顶层ul元素
/* 展开还是收起, 默认为false 展开*/
collapsed: true,
/* 唯一的, 当前菜单打开的时候其他菜单收缩*/
unique: true,
/*动态加载菜单(接收json数据)*/
url: "source.do"
});
# 动态加载菜单时接收的数据格式为
[
{
"text": "1. Pre Lunch (120 min)",
"expanded": true,
"classes": "important",
"children":
[
{
"text": "1.1 The State of the Powerdome (30 min)"
},
{
"text": "1.2 The Future of jQuery (30 min)"
},
{
"text": "1.2 jQuery UI - A step to richnessy (60 min)"
}
]
},
{
"text": "2. Lunch (60 min)"
},
{
"text": "3. After Lunch (120+ min)",
"children":
[
{
"text": "3.1 jQuery Calendar Success Story (20 min)"
},
{
"text": "3.2 jQuery and Ruby Web Frameworks (20 min)"
},
{
"text": "3.3 Hey, I Can Do That! (20 min)"
},
{
"text": "3.4 Taconite and Form (20 min)"
},
{
"text": "3.5 Server-side JavaScript with jQuery and AOLserver (20 min)"
},
{
"text": "3.6 The Onion: How to add features without adding features (20 min)",
"id": "36",
"hasChildren": true
},
{
"text": "3.7 Visualizations with JavaScript and Canvas (20 min)"
},
{
"text": "3.8 ActiveDOM (20 min)"
},
{
"text": "3.8 Growing jQuery (20 min)"
}
]
}
]
# "expanded": true 代表这个结点下的child是展开的。
# 返回的json字符串中的双引号必须是双引号。
## 初次请求时传递数据 root=source,点击节点申请数据时传递id值,如3.6中有id为36,且hasChildren:true,点击后传递36,我们再据此返回相应json数据。
引入css文件,根据其中的样式对页面进行设置
validate
使用
验证写在<head>中时,要写在页面加载中($(function{})) # 否则读取<head>时,页面还没有加载,没有表单
验证完成触发事件
失败事件:errorPlacement:function(error,element){} # error是错误消息,element是求救消息的js对象
成功事件:success:function(label){} # label是显示消息的js对象
远程验证:发送ajax请求到指定url # 自动传递验证名与验证值,ie中get请求调用浏览器缓存,所以用户回退字符时不提交。所以用post方式发送请求
## 返回"true"表示成功,"false"表示失败
remote:{
url:"/outrun/servlet/JqueryValidateServlet",
type:"post"
}
简单例子:
$("form").validate({
debug:true,
rules:{
name:{
required:true,
rangelength:[6,12]
},
},
messages:{
name:{
required:"用户名必填",
rangelength:$.format("用户名长度必须在{0}-{1}之间")
},
}
});
兼容:
不同validate验证框架要求不同的jquery版本
validate1.5.2配jquery1.3
经验
默认情况是丢失焦点验证,如果验证失败则 在失败的文本框每次输入数据都会触发onkeyup
设置 onkeyup:false
样式
默认是class="error"的样式,可以在页面中自定义.error{}样式取代,但是这样除了出错信息的样式修改外,用户输入信息的样式也会修改
错误信息是以添加<label>标签的形式显示的,所以可以添加<label>标签的样式,如form label{}
acccordion 下拉菜单
autocomplete 自动补全(用索引库)
password Vlidation 密码强度
prettdate 日期插件
message 消息框
报表
highcharts
jscharts
am charts
对象与属性
对象 # 静态创建
AmCharts.AmSerialChart() 序列图
属性
dataProvider 数据
# 接收json数据
categoryAxis 横坐标
属性
labelRotation 横坐标显示名角度
gridPosition 网格的起始位置,"start"表示开始处
dashLength 值为数字,网格中垂直线虚线程度 ,0代表实线
categoryField 横坐标显示名(dataProvider数据中的字段名)
depth3D 3D图形深度
angle 3D图形角度(左上俯角)
creditsPosition 未购买之前的商标位置,如"top-right"表示右上。
方法
write("chartdiv") # 要绘图div的id属性值
AmCharts.AmPieChart() 饼图
AmCharts.AmSerialChart() 雷达图
AmCharts.AmXYChart() 离散图
AmCharts.AmLegend() 图例
AmCharts.ValueAxis() 纵坐标
# 通过 AmCharts对象中图对象的addValueAxis()方法给图添加本属性
属性
title 纵坐标标题
dashLength 值为数字,网格中水平线虚线程度 ,0代表实线
AmCharts.AmGraph() 图形
# 通过 AmCharts对象中图对象的addGraph()方法给图添加本属性
属性
colorField 值为dataProvider提供数据中的字段名,表示数据在报表中的颜色
valueField 值为dataProvider提供数据中的字段名,表示占有数值的多少
balloonText 鼠标悬停时气球中的内容,用[[value]], [[description]], [[percents]], [[open]], [[category]] 等标记来引用数据
也可以用html标签,如: "<span style='font-size:14px'>[[category]]: <b>[[value]]</b></span>"
lineAlpha 0或1,代表数据图形是否有边界
fillAlpha 代表数据图形是否透明,0为透明
AmSerialChart中AGraph的属性
type 数据图形的形状,如"column"代表方块柱状图
AmCharts.ChartCursor() 光标
# 通过 AmCharts对象中图对象的addChartCursor()方法给图添加本属性
属性
cursorAlpha 0或1,是否显示鼠标跟随线
zoomable true或false 是否可以用鼠标选中来放大
categoryBalloonEnabled true或false 是否跟随鼠标显示横坐标种类名
方法2 # 动态创建
AmCharts.makeChart("" , json);
参数1 : 要产生图形的div的id
参数2 : json格式的产生条件
type : 图形类型,如"pie"
dataProvider : 图形数据
titleField : 需要显示的种类名对应在dataProvider中的字段名
valueField : 需要显示的权重对应在dataProvider中的字段名
legend : json数据,图例的产生条件
align : 对齐条件,如"center"
markerType : 图例的形状,如"circle"
使用1
var chart;
var chartData = [ {
"country" : "USA",
"visits" : 4025,
"color" : "#FF0F00"
}, {
"country" : "China",
"visits" : 1882,
"color" : "#FF6600"
} ];
AmCharts.ready(function() {
// SERIAL CHART
chart = new AmCharts.AmSerialChart();
chart.dataProvider = chartData;
chart.categoryField = "country";
// the following two lines makes chart 3D
chart.depth3D = 20;
chart.angle = 30;
// AXES
// category
var categoryAxis = chart.categoryAxis;
categoryAxis.labelRotation = 0;
categoryAxis.gridPosition = "start";
// value
var valueAxis = new AmCharts.ValueAxis();
valueAxis.title = "Visitors";
chart.addValueAxis(valueAxis);
// GRAPH
var graph = new AmCharts.AmGraph();
graph.valueField = "visits";
graph.colorField = "color";
graph.balloonText = "<span style='font-size:14px'>[[category]]: <b>[[value]]</b></span>";
graph.type = "column";
graph.lineAlpha = 0;
graph.fillAlphas = 1;
chart.addGraph(graph);
// CURSOR
var chartCursor = new AmCharts.ChartCursor();
chartCursor.cursorAlpha = 0;
chartCursor.zoomable = false;
chartCursor.categoryBalloonEnabled = false;
chart.addChartCursor(chartCursor);
chart.creditsPosition = "top-right";
// WRITE
chart.write("chartdiv");
});
使用2
AmCharts.makeChart("chartdiv", {
type: "pie",
dataProvider: [{
"country": "Czech Republic",
"litres": 156.9
}, {
"country": "Ireland",
"litres": 131.1
}, {
"country": "Germany",
"litres": 115.8
}, {
"country": "Australia",
"litres": 109.9
}, {
"country": "Austria",
"litres": 108.3
}, {
"country": "UK",
"litres": 65
}, {
"country": "Belgium",
"litres": 50
}],
titleField: "country",
valueField: "litres",
balloonText: "[[title]]<br><span style='font-size:14px'><b>[[value]]</b> ([[percents]]%)</span>",
legend: {
align: "center",
markerType: "circle"
}
});
习惯
#
命名方式规律
jquery.插件名.功能名.js
存储
网站js/下 分子文件夹存放不同插件的文件
自定义
#
函数
jQuery.extend(object); # 直接调用
jQuery.fn.extend(object); # 对象调用 $.extend($.fn,{})或$fn.extend({})
例子
$.extend({
max : function(a, b) {
return a > b ? a : b;
},
min : function(a, b) {
return a < b ? a : b;
}
});
$.fn.extend({
max1 : function(a, b) {
return a > b ? a : b;
}
});
$.extend($.fn, {
min1 : function(a, b) {
return a < b ? a : b;
}
})
alert($.max(1, 2));
alert($("html").max1(2, 1));
alert($("html").min1(1, 2));
问题
#
页面中引用jquery
只能用<script></script>的形式,而不能用<script/>的形式
引用的src必须写相对路径
引用的<script></script>代码必须写在使用之前
webroot/web-inf/不能用相对路径访问webRoot/下的文件,所以不能包含jquery文件。所以要用${pageContext.request.contextPath}/来访问
jquery mobile
#