jQuery serialize模块是对象数组序列化模块。
首先我们先看一下《JavaScript高级程序设计》中的序列化函数,专门用于form参数序列化的。
serialize函数
var parts = [],
field = null,
i,
len,
j,
optLen,
option,
optValue;
for(i = 0, len = form.elements.length; i < len; i++){
field = form.elements[i];
switch(field.type){
case "select-one":
case "select-multiple":
if(field.name.length){
for(j = 0, optLen = field.options.length; j < optLen; j++){
option= field.options[j];
if(option.selected){
optValue = "";
if(option.hasAttribute){
optValue = (option.hasAttribute("value")) ?
option.value : ooption.text);
}else{
optValue = (option.attributes["value"].specified ?
option.value : option.text);
}
parts.push(encodeURIComponent(field.name) + "=" +
encodeURIComponent(optValue));
}
}
}
case undefined:
case "file":
case "submit":
case "reset":
case "button":
break;
case "radio":
case "checkbox":
if(!fied.checked){
break;
}
default:
if(field.name.length){
parts.push(encodeURIComponent(field.name) + "=" +
encodeURIComponent(field.value));
}
}
}
return parts.join("&");
}
}
这能帮我们理解下面有些操作,当然从整体实现是差不多的。
但是jQuery提供了利用递归将深入对象或数组内部去序列化,而该方法只能对其下一级序列化,不能再深入下去。
而且jQuery能对满足要求对象、数组进行序列化。
jQuery.param
var prefix,
s = [],
// 内部函数充填函数
add = function( key, value ) {
// 如果value是一个函数,运行并得到其值
value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
// 向数组s中推入字符串"key=value"
s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
};
// 如果traditional为true,提供jQuery1.3.2以下版本兼容处理
// 如果traditional没定义
if ( traditional === undefined ) {
// 将traditional设置成jQuery.ajaxSettings.traditional
traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
}
// 如果a数组,假设其是一个包含元素的数组
if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
// Serialize the form elements
// 对a中所有元素的name和value推入s数组
jQuery.each( a, function() {
add( this.name, this.value );
});
// 否则
} else {
// 如果是traditional方式,则以老的方式encode(jQuery1.3.2以下版本)
// 否则递归encode
for ( prefix in a ) {
buildParams( prefix, a[ prefix ], traditional, add );
}
}
// 将s数组用&连接成字符串,将空白替换成+
return s.join( "&" ).replace( r20, "+" );
};
jQuery.param能将所有参数序列化,提供了对jQuery1.3.2一下版本不深入对象内部的兼容模式。
buildParams函数
var name;
// 如果obj是一个数组
if ( jQuery.isArray( obj ) ) {
// 序列化数组所有元素
jQuery.each( obj, function( i, v ) {
// 如果tranditional为true,或者prefix即当前obj名字为xxx[]
if ( traditional ||
这是一个基于客户端的筛选功能,依赖jquery实现,其实这个功能不是那么实用,也没有多少技术含量,只是可以熟悉几个常用的js和jquery方法。
//拼音、首字母、汉字:
我们之间没有延伸的关系只在黎明混着夜色时才有浅浅重叠的片刻不懂那月亮的盈缺像白天不懂夜的黑你永远不懂我伤悲像永恒燃烧的太阳不懂那星星为何会坠跌我们仍坚持各自等在原地
说说原理:页面加载完成将copy一份完整的ul或者select包括其事件存入按ul或select名称定义window属性中,然后将副本ul中的li或者select里面的option通过jquery加上自定义的三个属性,三个属性分别为li或option中间的文字,拼音,拼音首字母。当点击筛选按钮时通过jquery按三个自定义的属性查询匹配的li或option,将页面上的li或option清空,让后再插入查询的li或option同时去除自定义属性。Demo
本文链接
1.丢弃小数部分,保留整数部分
parseInt(5/2)
2.向上取整,有小数就整数部分加1
Math.ceil(5/2)
3,四舍五入.
Math.round(5/2)
4,向下取整
Math.floor(5/2)
Math 对象的方法
FF: Firefox, N: Netscape, IE: Internet Explorer
方法 描述 FF N IE
abs(x) 返回数的绝对值 1 2 3
acos(x) 返回数的反余弦值 1 2 3
asin(x) 返回数的反正弦值 1 2 3
atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值 1 2 3
atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间) 1 2 3
ceil(x) 对一个数进行上舍入。 1 2 3
cos(x) 返回数的余弦 1 2 3
exp(x) 返回 e 的指数。 1 2 3
floor(x) 对一个数进行下舍入。 1 2 3
log(x) 返回数的自然对数(底为e) 1 2 3
max(x,y) 返回 x 和 y 中的最高值 1 2 3
min(x,y) 返回 x 和 y 中的最低值 1 2 3
pow(x,y) 返回 x 的 y 次幂 1 2 3
random() 返回 0 ~ 1 之间的随机数 1 2 3
round(x) 把一个数四舍五入为最接近的整数 1 2 3
sin(x) 返回数的正弦 1 2 3
sqrt(x) 返回数的平方根 1 2 3
tan(x) 返回一个角的正切 1 2 3
toSource() 代表对象的源代码 1 4 -
valueOf() 返回一个 Math 对象的原始值
2. Math.acos(num) : 返回num的反余弦值
3. Math.asin(num) : 返回num的反正弦值
4. Math.atan(num) : 返回num的反正切值
5. Math.atan2(y,x) : 返回y除以x的商的反正切值
6. Math.ceil(num) : 返回大于num的最小整数
7. Math.cos(num) : 返回num的余弦值
8. Math.exp(x) : 返回以自然数为底,x次幂的数
9. Math.floor(num) : 返回小于num的最大整数
10.Math.log(num) : 返回num的自然对数
11.Math.max(num1,num2) : 返回num1和num2中较大的一个
12.Math.min(num1,num2) : 返回num1和num2中较小的一个
13.Math.pow(x,y) : 返回x的y次方的值
14.Math.random() : 返回0到1之间的一个随机数
15.Math.round(num) : 返回num四舍五入后的值
16.Math.sin(num) : 返回num的正弦值
17.Math.sqrt(num) : 返回num的平方根
18.Math.tan(num) : 返回num的正切值
19.Math.E : 自然数(2.718281828459045)
20.Math.LN2 : 2的自然对数(0.6931471805599453)
21.Math.LN10 : 10的自然对数(2.302585092994046)
22.Math.LOG2E : log 2 为底的自然数(1.4426950408889634)
23.Math.LOG10E : log 10 为底的自然数(0.4342944819032518)
24.Math.PI : π(3.141592653589793)
25.Math.SQRT1_2 : 1/2的平方根(0.7071067811865476)
26.Math.SQRT2 : 2的平方根(1.4142135623730951)