当前位置:  编程技术>WEB前端
本页文章导读:
    ▪jQuery serialize      jQuery serialize模块是对象数组序列化模块。首先我们先看一下《JavaScript高级程序设计》中的序列化函数,专门用于form参数序列化的。 serialize函数function serialize(form){ var parts = [], field.........
    ▪基于客户端的下拉框按首字母或拼音筛选      这是一个基于客户端的筛选功能,依赖jquery实现,其实这个功能不是那么实用,也没有多少技术含量,只是可以熟悉几个常用的js和jquery方法。// 拼音、首字母、汉字: 我们之间没有延伸的关.........
    ▪js中Math对象的方法       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 方法.........

[1]jQuery serialize
    来源:    发布时间: 2013-11-06

jQuery serialize模块是对象数组序列化模块。

首先我们先看一下《JavaScript高级程序设计》中的序列化函数,专门用于form参数序列化的。

 

serialize函数

function serialize(form){
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

jQuery.param = function( a, traditional ) {
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函数

function buildParams( prefix, obj, traditional, add ) {
var name;

// 如果obj是一个数组
if ( jQuery.isArray( obj ) ) {
// 序列化数组所有元素
jQuery.each( obj, function( i, v ) {
// 如果tranditional为true,或者prefix即当前obj名字为xxx[]
if ( traditional ||
    
[2]基于客户端的下拉框按首字母或拼音筛选
    来源:    发布时间: 2013-11-06

这是一个基于客户端的筛选功能,依赖jquery实现,其实这个功能不是那么实用,也没有多少技术含量,只是可以熟悉几个常用的js和jquery方法。

//

拼音、首字母、汉字:

我们之间没有延伸的关系只在黎明混着夜色时才有浅浅重叠的片刻不懂那月亮的盈缺像白天不懂夜的黑你永远不懂我伤悲像永恒燃烧的太阳不懂那星星为何会坠跌我们仍坚持各自等在原地

 

说说原理:页面加载完成将copy一份完整的ul或者select包括其事件存入按ul或select名称定义window属性中,然后将副本ul中的li或者select里面的option通过jquery加上自定义的三个属性,三个属性分别为li或option中间的文字,拼音,拼音首字母。当点击筛选按钮时通过jquery按三个自定义的属性查询匹配的li或option,将页面上的li或option清空,让后再插入查询的li或option同时去除自定义属性。Demo

 

 

本文链接


    
[3]js中Math对象的方法
    来源: 互联网  发布时间: 2013-11-06

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 对象的原始值

 
 
 
1. Math.abs(num) : 返回num的绝对值
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)
作者:luqin1988 发表于2013-1-23 16:24:44 原文链接
阅读:33 评论:0 查看评论

    
最新技术文章:
▪css white-space:nowrap属性用法(可以强制文字不...
▪IE里button设置border:none属性无效解决方法
▪border:none与border:0使用区别
▪html清除浮动的6种方法示例
▪三个不常见的 HTML5 实用新特性简介
▪css代码优化的12个技巧
▪低版本IE正常运行HTML5+CSS3网站的3种解决方案
▪CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chr...
▪ie6,ie7,ie8完美支持position:fixed的终极解决方案
▪小技巧处理div内容溢出
▪html小技巧之td,div标签里内容不换行
▪纯CSS实现鼠标放上去改变文字内容
▪li中插入img图片间有空隙的解决方案
▪CSS3中Transition属性详解以及示例分享
▪父div高度不能自适应子div高度的解决方案
▪告别AJAX实现无刷新提交表单
▪从零学CSS系列之文本属性
▪HTML 标签
▪CSS3+Js实现响应式导航条
▪CSS3实例分享之多重背景的实现(Multiple background...
▪用css截取字符的几种方法详解(css排版隐藏溢...
▪页面遮罩层,并且阻止页面body滚动。bootstrap...
▪CSS可以做的几个令你叹为观止的实例分享
▪详细分析css float 属性以及position:absolute 的区...
▪IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解...
▪CSS小例子(只显示下划线的文本框,像文字一...
▪可以给img元素设置背景图
▪不通过JavaScript实现的自动滚动视差效果
▪div+CSS 兼容小摘
▪CSS的inherit与auto使用分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3