Ajax:当前页面更改内容,前端实现
相信大家有用过Google Doc或Flickr,或者一些SNS社区的图片添加描述信息的效果,他们是在点击了一段文字后出现一个输入框,在输入框内输入你要填写的内容,点击“确认”或者“发表”即可立即显示出来。
今天做的这个效果呢,就是其中的截取版本。为什么这么说呢,因为我的效果只实现了前端的更改后立即发布的效果,而没有实际的与服务器端交互,也没有将输入的内容添加到数据库中,主要是为大家介绍一下实现原理。
1.HTML代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <div id="container">
<h1>Ajax Editing</h1>
<p>鼠标移动到列表上,双击即可以进行编辑!</p>
<div class="block">
<h2>一、电影列表</h2>
<ul class="editable">
<li>《建国大业》,<span class="color_red">更新中...</span></li>
<li><a href="http://www.ihiro.org/film-eternal-beloved">《爱有来生》</a></li>
<li><a href="http://www.ihiro.org/movie-coco-chanel">《COCO Chanel》</a></li>
<li><a href="http://www.ihiro.org/one-night-in-supermarket">《夜店》</a></li>
<li><a href="http://www.ihiro.org/the-legend-of-1900">《海上钢琴师–1900的传说》</a></li>
<li><a href="http://www.ihiro.org/film-xinsushijian-feedback">《新宿事件》</a></li>
</ul>
</div>
<div class="block">
<h2>二、书籍列表</h2>
<ul class="editable">
<li>《精通Javascript》</li>
<li>《jQuery基础教程》</li>
<li>《Flex入门到精通》</li>
<li>《PHP与MySQL Web开发》</li>
<li>《Google,你可以做什么》</li>
<li>《不抱怨的世界》</li>
</ul>
</div>
</div> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | * { margin:0; padding:0;} body { font:12px/20px Georgia, "Times New Roman", Times, serif; color:#404040;} h2 { font-size:24px;} .color_red { color:#F00;} #container { width:400px; margin:30px auto; overflow:hidden; height:1%;} /* 标题样式 */ #container h1 { text-align:center; font:32px "Lucida Sans Unicode", "Lucida Grande", sans-serif; margin-bottom:20px;} .block { width:180px; float:left; margin:30px 20px 0 0;} /* 列表li的样式 */ ul.editable li { padding:10px 0; list-style:none;} /* 高亮当前编辑的列表li */ .hover { background:#E8F3FF;} /* 高亮当前的input输入框 */ .editInput { width:160px; border:2px solid #E8F3FF; display:block;} /* save和cancel按钮的效果,鼠标移动到上面的效果 */ .btnSave, .btnCancel { padding:0 5px; border:1px solid #09F; background:#36F; color:#fff; text-decoration:none; margin:10px 0 0 20px;} .btnSave:hover, .btnCancel:hover { border:1px solid #36F; color:#39F; background:#fff;} |
3. jQuery代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | $(function() { var oldText, newText; //鼠标移动到列表li上后,添加一个高亮的背景 $('.editable li').hover(function() { $(this).addClass('hover'); }, function() { $(this).removeClass('hover'); }).bind('dblclick', function() { //获得列表li中原先的html代码 oldText = $(this).html().replace(/"/g, """); //将原先的html代码放在一个input中,并追加save和cancel按钮后插入到列表li中 $(this).html('<input type="text" class="editInput" value="' + oldText +'" /><a href="#" class="btnSave">save</a><a href="#" class="btnCancel">cancel</a>'); }).children('a').attr('target', '_blank'); //链接在新窗口中打开 //点击save按钮,将新的值插入在列表li中 $('.btnSave').live('click', function() { newText = $(this).siblings('input').val().replace(/"/g, """); $(this).parent('li').html(newText); //设置超链接a的跳转为否 return false; }); //若点击cancel按钮,则将最初的html代码插入在列表li中 $('.btnCancel').live('click', function() { $(this).parent('li').html(oldText); //设置超链接a的跳转为否 return false; }); }); |
双击列表li后,将原先列表li中的html源码保存在oldText变量中,并且在列表li标签内插入一个input输入框和两个链接作为按钮save和cancel之用;
点击save按钮后,将input中的新的html源码保存在newText变量中,重新插入到列表li中,从而覆盖了列表里中的input源码;
点击cancel按钮,浙江原先的html代码oldText重新插入到列表li中,覆盖掉因双击插入的input输入框和两个链接按钮。
注意:源代码中没有jQuery库文件,请下载查看代码的朋友根据源代码路径自行添加。
- 上一篇: XPath:语法及示例,前端学习收集
- 下一篇: 资讯:2009年10月编程语言排行榜








恩,多谢分享,我去试试
学习了
技术男,勇于创新的技术男!
很好很强大!
不行 不太适合我!
先去试试看什么效果!~
Ajax地确很强大,未来很有发展潜力。
不是未来,现在已经用的很普及了!只是我们接触的晚了而已!!
这就是传说中的就地编辑呀??
找了很久的东西!
不过,如果要把需改的内容存入数据库,又怎么做呀??
在js代码中使用$.ajax()或$.post()函数与PHP脚本交互,实现与数据库的操作!
呵呵 很强悍哦…拜会…
太强大了
mootool怎么实现呢?
没研究过mootool,所以也不知道该怎么实现!