15天学会jQuery (11-15)
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
[hilitecolor=#808080]15 days of jquery(day 11) --- 使用不苛刻的javascript代码实现多文件上传[/hilitecolor] 所以当我想写作《15天漫游jquery》的时候,我第一个想到的就是用jquery实现这个功能。 接触易用性狂热爱好者 几天前当我检查网站记录的时候,发现了一条遗漏的文章trackback。跟过去看的时候我发现我的两篇jquery文章被作者引用来证明他为什么讨厌javascript。 根据这个人的说法,任何工具或技术如果没有将易用性放在第一位都将成为垃圾。 尽管我很不同意这位仁兄一杆子打死的态度,但他还是让我对这篇详细教程有所留意。当我在编写一个简单网页效果的时候,我会尽量小心谨慎的处理。这样如果网站访客们决定关闭javascript代码执行功能的时候,他们仍然可以正常使用网站的功能。 关于第一价值的两个教程 使用一个文件输入元素实现多文件上传,并让整个交互过程流畅舒适。 只有一个文件输入元素,但添加了jquery和其他代码实现较为亲近用户的多文件上传功能。 在页面(x)html代码中使用了多个文件输入元素,但通过jquery调整为与第一个演示类似的显示页面效果。优点是代码是不苛刻的。。。即使关闭了javascript执行,用户也能上传多个文件。 解释 单文件输入框 jquery的$(document).ready() 函数的工作有两个: 在文档下载量最大的时候创建一个div元素。 查找文件上传框(假设这里只有一个),然后给它附上一个onchange事件。 $("input[@type=file]").change(function(){ 在dom树中导航,我使用jquery的parent()函数,然后用remove()函数移除元素。我还使用了append()和prepend()函数分别添加文件名和新的输入框。 两个关键点 - 最大文件上传数量设定: var filemax = 3;- 输入框必须有适当的定位措施: 这样弄以后输入框可疑由访问者决定添加还是删除,没有任何关于id或名称的操作。当这个窗体代码发送给服务器端脚本的时候,相关信息就已经被存放在了一个数组中了。 多文件输入框 首先,文件允许上传的数量由页面中的文件输入框的数量决定。其次,你仍然需要通过某种方法为每个输入框接收到的内容用一个数组存放。 第二个演示跟前面的比起来最大的不同在于,我遍历了每个文件输入框并在其内容有改动时执行doit()函数。通过遍历每一个输入框,我可以为我的代码添加有用的额外信息:输入框内容在“堆栈”中的顺序。 换句话说,当这段代码执行时,它会特别指定第一个输入框,或者第二个,抑或第三个。 代码见下: $("input[@type=file]:nthoftype("+ 你会发现当一个文件被选中时,文件输入框都会被文件名称覆盖。点击文件名就可以选择其他不同的文件。
[hilitecolor=#808080]15 days of jquery(day 12) --- jquery lightbox (插件)[/hilitecolor] 一些需要注意的地方 $(document).ready 取代了tb_init() 函数,作用是在每个包含对象名“thickbox”的链接上附加一个onclick事件。 function tb_init(){ $("body") $("#tb_overlay").click(tb_remove); $(window).resize(tb_position); $(window).scroll(tb_position); $("#tb_overlay").show(); $("body").append(" src='images/circle_animation.gif' /> 覆盖的div将使用一个特定的包含不透明外表的css文件指定表现。tb_window的代码用来通过ahah在页面中放置一张图片或者加入另一个页面。$(window).resize 和$(window).scroll 告诉jquery在用户重新调整窗口大小或者拖动页面翻页的时候执行tb_position函数。这是保证thickbox始终保持在窗口中心部位的手段。 接下来,cody查询url的后缀。 var urlstring = /.jpg|.jpeg|.png|.gif|.html|.htm|.php|.cfm|.asp|.aspx|.jsp|.jst|.rb|.txt/g; $("#tb_window").append("id='tb_image' src='"+url+"' width='"+imagewidth+"' height='"+imageheight+"' id='tb_closewindow'>close ");$("#tb_closewindowbutton").click(tb_remove);另外,远程文件将使用jquery的load()函数导入。 $("#tb_ajaxcontent").load(url, function(){ [hilitecolor=#808080]15 days of jquery(day 13) --- jquery 表格[/hilitecolor] 设置好正确的(x)html 和css后,你可以像下面那样创建表格: $.tabs(”container”); first tab on by default 如果你像在默认位置“上方”再添加一个表格: $.tabs(”container”, 2); second tab on klaus这里 示例,你可以看看最终效果。 我的改版 我稍微修改了klaus的代码,添加了一个简单的表单用来生成表格的表头。 用法: 非常简单。只需要输入每个表格的表头(最多5个),然后点击表单下方的按钮。下一个页面将生成结果html代码,你可以复制然后粘贴到文件中。 你还需要 下载klaus网站的css文件,做些你自己的修改,当然还要上传jquery框架库到你的服务器上。 这里是表格生成器的地址。
[hilitecolor=#808080]15 days of jquery(day 14) --- javascript 工具提示[/hilitecolor] 我对其中很多想法和思路拍案叫绝。我知道你已经看过很多类似的工具提示代码了。但是,cody 的方法已经在我的工作中显露出了闪光点。 当我检查html代码时,我发现了一个大问题,可访问性。链接在javascript关闭的时候无法工作。我并不是倾向于一定要实现全面的可访问性,只是在这里我认为可以有其他更具亲和力的方式实现相同的功能。 尤其是,我个人不喜欢那种为了可访问性而去牺牲可用性来实现在提示框上链接另一个页面链接的方法。我喜欢这个提示框 - 不是对cody不尊重,只是在我这里我“需要”它能够在各种情况下工作。 今天我要提供给大家的是cody的工具提示代码的小小修改。如果你不是cody工具提示的爱好者的话,我的改版对你来说也许不是很在意。但如果你喜欢他的作品同时希望它可以在javascript关闭的时候照常工作,这个也许是你需要的。 我的改动 让我产生修改想法的,是他的代码在yahoo上的应用。我不喜欢他使用的代码: name="before you click..." http://yahoo.com" 改进:html标准校验 我的代码可以通过w3.org的测试 改进:命名 在我修改cody的代码的时候我发现他使用了一个用来存储链接名称的叫做“title”的变量名,这会导致一些混淆。 我标出了这个命名问题,即使我认为这不过是个小小的失误。 改进:可用性 使用我的代码,你可以让每个提示框都含有真实链接地址到另一个文档,不管内部的还是外部的。或者你只是想要那个提示框,不想关心可用性,你同样可以让链接部分留空。 选择权在你。 感谢 cody提供了伟大的代码,帮助我节省了大量的时间和精力。我的修改只是对原有代码的轻微“调整”,希望朋友们喜欢。
[hilitecolor=#808080]15 days of jquery(day 15) --- 拖拽效果和选择器 [/hilitecolor] 继续整理中。。。 该文章在 2010/4/24 10:47:34 编辑过 |
相关文章
正在查询... |