20110407jquery使用心得+联动

2018-11-28 18:06

jquery使用总结

作者:袁明勋

最近项目中前端一直使用的是jquery框架,公司平台也由Ext 换成jquery。jquery确实是使用简单、容易上手、使用灵活的好框架,难怪它现在已经成为最流行的javascript框架之一。最近的一次项目中,因为大量的使用了jquery,让我对它有了一个深刻的了解,也让我不得不为之感叹!在项目中除了使用了一些常用属性和方法外,还使用了诸如:clone(), offset(),one,unbind等一些属性和方法,以下是一些我阅读相关文档结合开发中的一些总结:

1. 整体

我们在使用jquery的时候需要这么写$(document).ready (function(){});,我一开始也是这么做的,后来在阅读jquery相关自资料的时候,发现有更简便的方法$(function(){})。也就是说$,替代了$(document).ready。其实这个$,指的就是jquery()函数,是不是很简便?网友把jquery的四种使用方式叫做四大天王,这四个使用方法分别是: jQuery(expression,[context])、jQuery(html,[ownerDocument])、jQuery(elements)、jQuery(callback)。

1). jQuery(expression,[context]):指的就是jquery的选择器了。第一个参数表达式,第二个参数作用域.具体使用我这里就不详解了。我就说明几点:在使用选择器的时候尽量使用id标识选择,使用id标识的时候;最好把作用域给写上,并且范围尽量要小。这样做的目的是为了优化我们的程序,当作用域没有指明的时候,jquery默认会对整个DOM结构进行查找。

2).jQuery(html,[ownerDocument]):用于动态创建由 jQuery 对象包装的DOM元素,元素内容为html的内容,类似于javascript中的document.createElement()功能。

3).jQuery(elements):将javascritp elements转换为jquery元素。如:$(document.getElementById(“test”))。那么我们如何将我们的jquery元素转换为javascript元素呢?方法有两个:$(“#test”)[0]和$(“#test”).get(0)。需要指明的是jquery元素只能调用jquery的方法,javascript只能调用javascript的方法。

4). jQuery(callback):当DOM加载完成后,执行其中的callback函数.

.大部分情况下我们使用$就行了,它的意思是在dom 加载完图片刚开始加载时候执行,但在有些时候,我们需要等图片加载完再执行呢?这个时候就可以使用$(window).ready (function(){});,不过我现在还没使用过$(window).ready (function(){});这两个的区别也很容易理解。

2. live()和bind()

页面上

$(\ $(\type='button'

看下面的例子:

class='test'

value='button'/>\

});

这句代码的意思是我们点击addbutton后,在其后面追加一个button。我们还希望追加的这个button拥有与addbutton一样的功能。

这句代码执行后,页面上已经追加了一个button但是并当我们点击这个button的时候并不是我们想要的结果。我们试着把bind换成live看看结果会怎样?结果是点击追加的这个button拥有同样的添加button功能。代码如下: $(\ $(\type='button' class='test' value='button'/>\ });

扩展:live()?die() :移除绑定在对象上的live()事件 bind()?unbind() :移除绑定在对象上的bind()事件

3.one()

我们先看看API的解释: 每一个匹配元素的特定事件(像click)绑定一个一次性的

事件处理函数。很容易理解,就是让事件执行一次,但是具体会在什么样的场合使用呢?我目前只在数据联动的时候用到过.

功能需求:实现部门与员工二级联动,要求在没有选择部门时,需要将所有员工显示出来,在选择部门时,显示部门下的员工.

实现原理:部门改变时改变员工的下拉框项.以下代码实验环境为ssh+json+jquery. 页面上:

部门:

员工:

这里部门没有选择时,会显示所有员工。其实添加的时候功能实现比较简单.我这里讲下大概思路.

$(\department\

// 获得部门的id

var departmentId=$(\department\ // 提交post请求(把部门id作为参数提交) // 这里提交返回的是json类型,

如:{“user”:[{“id”:”1”,”name”:”袁明勋”},{“id”:”2”,”name”:”测 试”}]} //当

post

请求成功以后,我们先对部门清空

$(\department\

// 然后追加option

//$(\department\

value='\这里的id和name由json返回.

});

如此一样我们的级联添加就已经完成了。我们的问题是在编辑的时候,在编辑的时候我们通过从action get数据对部门和员工进行回显.

$(\department\部门标识); $(\ staff \员工标识);

我们点击编辑的时候数据确实回显了,如果你是个仔细的人你会发现:点击编辑时,部门此时已经选中,这是正确的,但是当我们点击员工时,问题出现了:该下拉选项是所有员工。造成的结果是若用户按这种方式编辑,有可能出现这个员工不属于这个部门的情况.我有想过通过脚本直接去触发部门的change事件,我也试着这么做,但是结果失败了,这样会照成其他的问题。为什么一定要直接

去触发部门的change事件呢?我们是不是可以通过员工间接触发部门事件?对,就是员工间接来改变部门.如果你能想到点击员工去间接触发部门改变事件,说明你已经离成功不远了。

$(\ staff \“click”, function(){ // -------------

$(\ staff \“change”);

});

笔者首先想到了这种方法,但是员工将永远不能选择.好了,该我们的one登场了:

$(\ staff \“click”, function(){ // -------------

$(\ staff \“change”); });

这么做对我们添加也没有一点影响,OK,大功告成! 执行过程如图:

触发部门change

员工click 部门change

部门chang改变员工


20110407jquery使用心得+联动.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:财务风险分析开题报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: