您的位置:首页 > Web前端 > JQuery

jquery使用心得---杂+完美级联

2011-04-07 22:21 274 查看
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()


看下面的例子
:

页面上
<input
type="button" class="test"

value="addbutton"/>

我们对它进行这样处理

$(".test").bind("click",
function(){

$("body").append($("<input
type='button' class='test' value='button'/>"));

});

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

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

$(".test").live("click",
function(){

$("body").append($("<input
type='button' class='test' value='button'/>"));

});

扩展:
live()
à

die() :
移除绑定在对象上的
live()
事件

bind()
à

unbind() :
移除绑定在对象上的
bind()
事件



3.one()


我们先看看
API
的解释
:

每一个匹配元素的特定事件(像
click
)绑定一个一次性的事件处理函数。很容易理解,就是让事件执行一次,但是具体会在什么样的场合使用呢
?
我目前只在数据联动的时候用到过
.

功能需求
:

实现部门与员工二级联动
,

要求在没有选择部门时,需要将所有员工显示出来,在选择部门时,显示部门下的员工
.

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

页面上
:

部门
:

<
select
name
=
"
department

"

id
=
"department"

>

<
option
value
=
""

>
--
请选择
--
</
option
>

<
s:iterator

value
=
"departmentList"
>

<
option
value
=
"<
s:property

value
=
"id"

/>
"><
s:property
value
=
"name"
/></
option
>

</
s:iterator
>

</
select
>

员工
:

<
select
name
=
"

staff

"
id
=
"staff"
>

<
option
value
=
""
>
--
请选择
--
</
option
>

<
s:iterator
value
=
"userList"
>

<
option
value
=
"<
s:property

value
=
"id"

/>
"
><
s:property
value
=
"name"
/></
option
>

</
s:iterator
>

</
select
>

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

$("#

department

")

.change(function(){

//
获得部门的
id

var departmentId=$("#
department
").val();

//
提交
post
请求
(
把部门
id
作为参数提交
)

//
这里提交返回的是
json
类型
,


:{“user”:[{“id”:”1”,”name”:”
袁明勋
”},{“id”:”2”,”name”:”



”}]}

//

post
请求成功以后
,
我们先对部门清空
$("#
department
").empty();

//
然后追加
option

//$("#
department
").append("<option
value='"+id+"'>"+name+"</option>");
这里的
id

name

json
返回
.

});

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

$("#
department
").val(get
部门标识
);

$("#
staff
").val(get
员工标识
);

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

$("#
staff
").bind(“click”, function(){

// -------------

$("#
staff
").trigger(“change”);

});

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

$("#
staff
").one(“click”,
function(){

// -------------

$("#
staff
").trigger(“change”);

});

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

触发部门
change





员工
click

部门
change

部门
chang
改变员工



在项目中还使用的属性和方法包括
:remove(),offset(),clone()

,
使用的事件包括
:click,dbclick,
右击
,
拖拽等
,
这些使用起来都是非常方便的
,
足以证明
jquery
的强大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: