标准的脸谱网布局在社交媒体的粉丝中是众所周知的。网站上的许多动态表单字段启动了Ajax驱动的后端脚本的巨大趋势。现在我们可以看到开源PHP开发人员为WordPress、Drupal或JooMLA等几十个平台提供他们的代码示例。
黔东南网络公司在本教程中,我将重点放在构建一个简单的jQuery内联编辑字段。我们不会在本地存储任何数据,而是可以在每个编辑之后直接在页面上更新HTML数据。可以将其绑定到MySQL数据库并将所有这些值存储为缺省值。但是现在让我们只对前端功能进行编码。
建立文件
首先,让我解释一下我正在使用的文档结构。我有3个单独的文件。索引文件 ,样式表和profile.js在头部区域,我还包括了最新的外部参考。JQuery 1.7.2库 .
?
One Two Three Four Five Six Seven Eight Nine Ten | <!doctype html> <HTMLlang="en"> <头部> <metahttp-equiv=“内容类型”content="text/html; charset=utf-8"> <title>FB-Style Inline Edit Fields</title> <meta姓名=“作者”content="Jake Rocheleau"> <linkrel=“样式表”type="text/css"href=“风格CSS”> <script类型=“文本/ JavaScript”src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script类型=“文本/ JavaScript”src="profile.js"></script> </头部> |
因为我们使用HTML5 DOCTYPE,所以我尝试利用这些额外的元素。html5shiv script如果您希望支持旧的传统浏览器,那么它也是一个选项。大多数IE9之前发布的Internet Explorer将不支持所有更新的HTML5元素。
?
One Two Three | <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> |
表格输入块
核心内容的大部分被分解成这些元素。页眉、页脚、段落和文本块构成了我们演示布局的大部分。但是更具体地说,我们应该快速浏览一下我是如何构建输入区域的。
我有一组用“齿轮”标记的div元素。当您第一次加载页面时,这包括一些默认值,每次刷新这些默认值都会被再次设置。
?
One Two Three Four Five Six | <divclass="gear"> <label>Full Name:</label> <span身份证件="fullname"class="datainfo">Johnny Appleseed</span> <ahref="Wei"class="editlink">Edit Info</a> <a类=“萨维本”>Save</一> </div> |
我使用了一些其他的内部类,以后我们可以使用jQuery来实现。DATANEFO类应用于包含用户值的每个跨度元素。每个跨度也有唯一的ID,因此我们可以引用正确的名称/值对。
编码显示样式
我们应该快速浏览一下简单的CSS样式表中的一些重要元素。大多数有趣的属性都是在编辑/保存按钮上设置的。例如,我们需要先隐藏保存按钮,直到用户点击相关的“编辑”链接。
?
One Two Three Four Five | /** @group buttons **/ .savebtn {位置:绝对的;正确的:Zero;上衣:13PX;衬垫:4PX9px;background:#5972a8;font-size:1.2em;cursor:pointer;border:1px固体#1a356e;color:#fff; -webkit-box-shadow:insetZero1pxZero#8a9cc2; -moz-box-shadow:insetZero1pxZero#8a9cc2盒影:insetZero1pxZero#8a9cc2;margin-bottom:5px;margin-top:-5px;display:none; } .savebtn:hover {颜色:γ-FFF;背景:γ607dB7;文本装饰:无; } .savebtn:active {背景:#556790; } |
许多CSS样式是为了模仿旧的脸谱网按钮而创建的。编辑链接是一个稍微不同的故事,但是我们可以使用jQuery更新这些CSS属性。
?
One Two Three Four Five Six Seven Eight Nine Ten Eleven | .profileinfo {背景:F2F2F2;宽度:100%;衬垫:4PX10px;border-left:1px固体#b3b3b3;border-right:1px固体#b3b3b3;border-bottom:1px固体#b3b3b3;} .profileinfo hTwo{位置:相对的;左边:-250px; } .gear {位置:相对的;显示:块;边缘底部:25PX;底部间隙:15PX;边界底部:1PXsolidD9D9D9; } .gear a.editlink {位置:绝对的;正确的:Zero;上衣:13PX; } .datainfo {左边余量:10px;字体大小:11px;颜色:#333; } label {显示: inline-块;字体加粗:大胆的;颜色:#696969;字体大小:12px;宽度:100px; } .hlite {背景:αE2E8F6;边境:1PXsolid#bdc7d8;宽度:250px;左边余量:-7PX;衬垫:4PX7px;color:#565656;font-size:12px;} |
最后一段代码查看了几个内部CSS类。齿轮标签元素具有显示这些输入表单的特殊属性。我已经设置了所有显示在同一块区域上的内联线,然后当你点击“编辑”时,输入字段就放在同一个显示器的内部。
DOM脚本操作
了解基本的页面结构对于我们进入jQuery代码是至关重要的。您希望事先有一个计划,这样您就知道如何攻击这个问题。DATANEFO使用输入字段,用户可以编辑和保存更改。
?
One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve Thirteen Fourteen Fifteen Sixteen | $(document).ready(功能(){ $(".editlink")"click",function(e){ e.preventDefault(); vardataset = $(这).prev(“达坦福”); varsavebtn = $(这).next(“SaveBtn”); vartheid = dataset.attr(“ID”); varnewid = theid+“-形”; varcurrval = dataset.text(); DataSet; $('<input type="text" name="'+newid+'" id="'+newid+'" value="'咖哩'" class="hlite">').appendTo(dataset); $(this)CSS("display","none"); savebtn.css("display","block"); }; |
整个函数块包含了每当用户单击任何编辑链接时运行的代码。首先,我们防止URL加载HREF属性中的任何值。然后,我设置了一组本地变量,这些变量访问DATANEFO和萨维通所有在同一个齿轮输入。
在拖动当前文本值之后,我们完全擦除内部HTML。空()然后,我构建了一个基本输入字段,它与数据信息中显示的值相同。.appendTo()在这个元素上,我可以选择任何一个DOM容器来存储这个新的输入字段。很明显,最后一步是隐藏编辑链接并显示保存按钮。
你可以看到,除了一个离群值之外,这都是相当简单的。我不使用任何传统的表单元素或提交输入按钮,主要是因为我们没有后端绑定到脚本中。但是,即使我们保存到数据库,我仍然只使用输入字段,因为我们不需要一个完整的表单来提交任何数据。我能看到的唯一原因是支持使用JavaScript禁用的旧版本浏览器。
保存用户更改
这最后一片profile.js脚本包含每当用户点击“保存”按钮时运行的所有代码。事件Debug()因此浏览器没有加载HREF值。
有些变量需要很难处理当前输入字段值。但是我们在清除输入元素之前将其存储起来,然后将值添加为纯文本。所有这些命令都是在本地完成的。DATANEFO容器
?
One Two Three Four Five Six Seven Eight Nine Ten Eleven Twelve Thirteen Fourteen Fifteen Sixteen Seventeen | $(".savebtn")"click",function(e){ e.preventDefault(); varelink = $(这).prev(".editlink"); vardataset = elink.prev(“达坦福”); varnewid = dataset.attr(“ID”); varcinput ="Wei"+newid+“-形”; vareinput = $(cinput); varnewval = einput.attr(“价值”); $(this)CSS("display","none"); einput.remove(); dataset.html(newval); elink.css("display","block"); }; }); |
当引用时美元(这个)我们现在指的是保存按钮,所以最后几行隐藏了保存按钮并完全删除了输入字段,然后在点击保存之前,用任何存储的值替换输入。最后,我们希望重新显示编辑链接,以便用户可以返回并在需要时进行进一步的编辑。
这是一个非常简单的过程,一旦你理解了这个计划,以及如何处理整个脚本。Ajax()然后,在其他PHP后端文件中,您可以处理所有的数据库查询,而不必触摸脚本的任何其他部分。
闭幕思想
黔东南网络公司希望这个教程可以帮助你了解更多关于DOM操作的知识。如果你有足够的时间来编写一个合适的解决方案,你可以做很多事情。而且随着开源库的增加,比以往任何时候都更容易缩放功能。
如果你还没有看过现场演示,你应该尝试检查上面的链接,或者下载我的源代码的副本。很容易通过自己的自定义更改。然后你可以在你的网站上甚至在将来的Web项目中实现类似的方法。如果你有任何进一步的评论或想法,可以自由地分享到下面的讨论区。