Skip navigation.

极湖

无不用其“极”

Posts tagged with "jQuery"

jQuery 扩展小试: 取得列表选中项属性

, ,

想要以 jQuery 的方式取得列表中被选中项的文字,找来找去找不到现成的方法,只好现做一个:
(function($){
    /**
     * Get selected option's property
     */
    $.fn.getSelectedProperty = function(property) {
        var arrValue = Array();
        var a=0;
        this.each( function() {
            for (var i=0; i < this.options.length; i++) {
                if (this.options[i].selected == true) {
                    arrValue[a] = this.options[i][property]; 
                    a++;
                }
            }
        });
    
        if(arrValue.length > 1) {
            return arrValue;
        } else if(arrValue.length == 1) {
            return arrValue[0];
        }
        return '';
    };
})(jQuery);

以上函数,单选返回字符串,多选返回数组。

用法例:
alert($("#select_box_id").getSelectedProperty('text')); 

改造一个 jQuery 的文件上传组件

, ,

为了实现 Ajax 方式的文件上传,在网上找到一个 AjaxFileUpload 的 jQuery 插件,能用,不过还是有一些不足,比如不能在文件上传的同时指定其他参数(hidden),还有一些不大不小的 Bug,于是修改了一下其代码。修改之后用法如下:

首先在 HTML 文件头部引入 jQuery 以及该插件:
<script type="text/javascript" src="jquery.pack.js"></script>
<script type="text/javascript" src="jquery.ajaxupload.js"></script>


然后写一个函数:
//*******************************************************
// Ajax文件上传
//*******************************************************
function uploadFile(fileId) {
    $("#uploading").ajaxStart(function(){
        $(this).show();
    }).ajaxComplete(function(){
        $(this).hide();
    });
    $.ajaxFileUpload({
        url: 'upload.php',
        secureuri: false,
        fileElementId: fileId,
        dataType: 'json',
        success: function (data, status) {
            alert("上传成功。\n" + e);
        },
        error: function (data, status, e) {
            alert("发生错误!\n" + e);
        },
        extFields: {
            user : 'guest',
            comment : '好'
        }
    });
    
    return false;
}

和原来相比,增加了 extFields 这个参数。
其中的 upload.php 就不在这儿贴代码了,如果不会写这个,就说不过去了。

最后是调用:
$("#upload_button").click(function () {
    uploadFile("my_file");
});


效果马马虎虎,还算过得去。

下载:
jquery.ajaxupload.js

道德经

, , ,

做了逐句自动播放的《论语》,接着就想炮制自动播放的《道德经》。

道德经》的结构和《论语》有所不同,因此想做成不同风格的东西,可是总也找不到新的创意。不经意在 Opendesigns.org 上发现一款古朴的设计,忍不住就把他炮制成自动播放的《道德经》了。

默认设置的时间间隔是8秒,也就是说,只需用时648秒,即可翻完九九八十一章《道德经》,不到11分钟。

以下是截图:

论语逐句播放

, , ,

做了《唐诗三百首》之后,利用已实现的自动播放代码,顺便做了逐句播放的《论语》。

网上《论语》的文字到处都有,我做这么一个东西,只是出于兴趣,为的是方便像我一样的懒人,读书不用翻页,不用点链接,甚至不需要滚屏。


网址:http://staticlake.appspot.com/lunyu/index.html
也可以用这个地址访问。

特点:
  • 默认自动翻页。每次显示一句。
  • 可以调整播放的速度,通过滑块调整。
  • 可以按顺序播放,也可以随机播放。
  • 完全用 JavaScript 实现(借用了 jQuery 库),对应三大浏览器(IE, Firefox, Opera)。


有兴趣不妨看看,也欢迎您提供宝贵意见。

唐诗三百首

, , ,

还是用 JavaScript 做的小东西,或许可以称之为“唐诗自动播放器”,目前仅实现一些基本的功能,还不是很完善,不过,用来欣赏一下唐诗,却也马马虎虎可以用了。

中文世界里,《唐诗三百首》是流传最广的书籍之一,网上很多地方都能找到。我只不过是想用一种不同的方式实现“动态书籍”,尽量方便阅读,同时,通过做这个小东西,还能掌握一些浏览器界面元素的操作技巧。


网址:http://staticlake.appspot.com/tangshi/index.html
如果在国外,也可以用这个地址访问。

特点:
  • 英汉对照,左边汉语,右边英文。
  • 默认自动翻页。也可以手工翻页。
  • 可以调整播放的速度,通过滑块调整。
  • 可以按作者和标题查询诗作。
  • 查询输入有自动补齐的效果。
  • 点当前编号可激活输入框,输入数字就能显示指定编号的诗作。
  • 完全用 JavaScript 实现(借用了 jQuery 库),对应三大浏览器(IE, Firefox, Opera)。


如果您对这个小东西感兴趣,欢迎提供宝贵意见。

易经六十四卦

, , , ...

jQuery 是个让人着迷的 JavaScript 库,这些天一直在学这个东西。

用 jQuery 作了几个日历之后,接下来想做一个“算命”的东西,那就是《易经》。

经过几天的琢磨,做出这么一个“易经六十四卦”的网页:


网址:http://staticlake.appspot.com/iching/index.html
如果在国外,也可以用这个地址访问。

网页看上去五颜六色,不是很美观,还需要调整。

特点:
  • 用八卦图案合成六十四卦图案。
  • 有鼠标提示,显示八卦和六十四卦的卦名等信息。
  • 点击六十四卦图案,显示相应的经文,点击经文自动关闭文字框。
  • 可以进行占卜,按顺序随机生成六个“1”或“0”的数字,组合后就是占卜的结果。
  • 用了一点 Ajax 技术,对应三大浏览器(IE, Firefox, Opera)。

如果您对这个小东西感兴趣,欢迎提供意见。

*更新*
  • 采用黑色背景的配色方案。(2007.9.1)
  • 弹出窗口样式更新,增加关闭图标。去掉点击文字区域关闭窗口的功能。(2007.9.1)
  • 增加白话文解析,原文和白话文通过 Tab 切换。(2007.9.2)

jQuery 升级到 1.1.4

, ,

jQuery 1.1.4 正式发布了,号称更快、更多测试、为 1.2 做准备

看介绍,该版本速度比起 1.1.3.1 ,又有不少提高,同时加了一些新功能,个头也有所增长,压缩版长了1k多点。

顺便把几个日历的 jquery 升级了,在 1.1.4 下,没有发现运行错误。

日历地址:
http://geelake.com/cnCalendar/
http://geelake.com/jpCalendar/
http://geelake.com/usCalendar/

用JavaScript做了一个日历

, , ,

利用空闲时间,作了一个 日历 ,完全用 JavaScript 实现,用到了 jQuery 库,还用到了 jQuery 的插件 Tooltip

日历功能及特色:

  • 用不同颜色显示节假日,鼠标移到日期上面即可显示该节假日名称。
  • 默认显示今年日历,前后各有五年的日历链接。
  • 除了前后五年的日历链接,还可以前后翻页。
  • 点一下当前年度的标签,即可自由输入年分,按Enter键后显示输入年度的日历。(目前限制输入范围为0到10000)
  • 对应三大浏览器:IE、Firefox、Opera。Safari、Konqueror等浏览器目前尚未测试。

日历外观如图所示:

因为常常要查看哪天是红日子(节假日),而且习惯了在网上查看日历,所以觉得这个东西还有点用。

网上有很多现成的日历,据我观察,生成日历的程序大多都在服务器端。实际上,JavaScript 功能足够强大,一个简单的日历程序,用浏览器本身足矣。

最近对 jQuery 比较感兴趣,有心学学这个东西,因此在这个库的基础上,做了这个日历程序。

以上日历,也可以通过这个地址访问。

该日历程序参考了维基百科的词条:日本のこよみ

*更新
鼠标提示增加日期的对应星座。(2007.08.16)

转载: jQuery——JavaScript冲击波

,

接触jQuery不过数日,已经对其着迷了。

JavaScript世界里出现这么优秀的代码库,去年就已经发布,我到现在才认识,真有一种相见恨晚的感觉。

看了这篇翻译文章《jQuery——JavaScript冲击波》,我觉得应该向更多的人介绍这个优秀的代码库,故转贴于此。

jQuery——JavaScript冲击波

jQuery 1.0已经于美国时间2006年8月26日发布。这是一个好消息,世界上又多了一个超级优秀的JavaScript Framework。

我本身不是JavaScript行家,只懂些编程中最基本的东西,甚至连门都没入。但我却能从jQuery — New Wave JavaScript做很多事情,而我相信,如果使用最原始的JavaScript编写方法,我还得费上至少一年时间来学习,才能达到相同的效果。

这当然不是我喜欢它的主要理由。它的CSS选择器和XPath操作器让我最兴奋。写JavaScript,最基本的就是对DOM的选择与操作。 JavaScript自然提供有大量的API供使用,但是要精确地选择某个(些/类)元素还是相当苦难,最简单的例子,需要选择class,我们没有现成的getElementsByClassName可用,要达到目的,甚至连正则表达式都用上,而jQuery只需 $(".class"),像CSS中选择元素一样对DOM进行选择。所以,假如你也是一个CSS写手,你会迅速明白这些 $("div.class"), $("#id + .class"), $(".class > a")是啥意思。而$(".class/../p")这种最基本的XPath的东西也不难懂,总之,DOM选择就用CSS选择器的思维来思考即可。这对我来说,实在太方便了。

而操作,jQuery提供的API也十分浅显易懂,我们不用管它背后用什么实现。比如 $("p.surprise").addClass("ohmy").show("slow");,表示,给class为.surprise的p元素赋予.ohmy的class,然后显示(show)出来。我相信,即使第一次见到的人都知道它在干嘛。实际上,我就是第一次见到它就深深爱上了jQuery。

从上句中也得知,实际上jQuery对象的操作是可以Chainable(咋翻译好呢),你可以对一个jQuery对象传送不止一个信息(函数),这实在也太方便了。

还有一点,基本上,jQuery的代码都简洁易读,个人看法,这要归功于函数式编程(functional programing)方式,我认为这是一种强大的,优雅的编程方式,所以我更喜欢。

当然,我说过,我并不会编程,我说的东西可能都很肤浅,但它确实让我从中找到编程的乐趣,Thank you, John!

用jQuery实现的按键测试

,

在html里面放一个id为'input_box'的文本输入框,再放一个id为'test_div'的div,就能用以下代码进行按键测试了。
(不要忘了引入jquery.js)
<script type="text/javascript">
<!--
$(function(){
    var InputBox = $("#input_box");

    //******************************
    // KeyPress事件处理
    //******************************    
    InputBox.keypress( function(e) {
        $("#test_div").text("KeyPress: " + e.keyCode.toString());
    });
    
    //******************************
    // KeyDown事件处理
    //******************************    
    InputBox.keydown( function(e) {
        $("#test_div").text("KeyDown: " + e.keyCode.toString());
    });
    
    //******************************
    // KeyUp事件处理
    //******************************    
    InputBox.keyup( function(e) {
        $("#test_div").text("KeyUp: " + e.keyCode.toString());
    });

});
-->


看了一下W3G关于的文档,这几个Event发生的顺序是 onkeydown → onkeypress → onkeyup
December 2009
S M T W T F S
November 2009January 2010
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