Saturday, October 9, 2010

jquery 事件处理研究(1)

jquery 事件绑定很好用,
不过处理事件冒泡、后续事件执行逻辑很是纠结。
总结已知的逻辑如下。


jquery 的事件提供以下方法处理相关逻辑:

1. ev.preventDefault -> 阻止浏览器绑定到当前 node 的默认行为,比如 a 链接的 click 事件默认会跳转
2. ev.stopPropagation -> 阻止冒泡,即当前 node 的 parentNode s 绑定的同类型事件不会被触发
3. ev.stopImmediatePropagation -> 阻止当前 node 同事件类型 后续函数的触发,会自动调用 ev.stopPropagation() ,
    比如给 #a 绑定了 5 个 click ,当第 2 个函数调用了 ev.stopImmediatePropagation() 以后,后面的 3 个函数都不会被调用,
    并且这个 click 事件也不会再冒泡了。
    如果只想阻止后续函数的触发而不阻止冒泡(假如有这需求呢),那么可以设置
        ev.isImmediatePropagationStopped = function () {return true;}; 即可。
4. return false -> 如果事件处理函数返回 false ,那么 jquery 会自动调用 ev.stopPropagation() 和 ev.preventDefault() ;
    但是后续函数会继续执行 :(

以上描述在正常的 .bind .click 等方法中正常,在 .live 和 .delegate 稍有不同

1. 在 .live 的事件处理函数中 return false ,行为不仅仅是上面描述的,还会产生类似 ev.stopImmediatePropagation() 的效果,
    即后续的 live 事件都不执行了;
2. 在 .live 的事件处理函数中想阻止后续函数的执行,只能 return false ;
    但是这样有个副作用就是 jquery 会自动调用 ev.stopPropagation() 和 ev.preventDefault() ,这个行为没法改变!!!!



纠结的事情啊
望同样纠结、研究过的一起探讨


参考:


Saturday, September 25, 2010

mac osx 上安装git

很久很久以前,我在 mac 上装 git,从 source 。
结果发现没法 make doc

因为他需要 xmlto 这个东西,
而这个东西需要能支持 --long-opt 的 getopt ,
从 http://software.frodo.looijaard.name/getopt/download.php 下载的东西编译不能通过,
经查是因为 getopt 的 Makefile 有错误导致。

文件 line.36 

CPPFLAGS=-DLIBCGETOPT=$(LIBCGETOPT) -DWITHOUT_GETTEXT=$(WITHOUT_GETTEXT) -DLOCALEDIR=\"$(localedir)\" -DNOT_UTIL_LINUX

的 -DWITH_GETTEXT 是错误,按照上面的修改即可。

可能大多数人都有个 gettext 所有没问题。

OK, 无论如何,解决了就好。





PS: 最终还是没能 git - make man 成功,下次再战。

Monday, September 20, 2010

压缩好东东 lzo

这个世界上总有太多的好东西等着我们去发掘。

晚上看 kindle 的资料,无意中翻开下载的 kindle src ,发现里面有个 lzo 名字比较有趣,
打开看看就更有兴趣了,遂 go 了一把,觉得是个好东西,可以拿来替换掉 gzip 了。


Wednesday, August 18, 2010

vim 中同时滚动水平分割窗口


vim 中可以水平分割窗口, :vs file2
如果想保持滚动其中一个窗口,另一个也跟着滚动,可以这么来:

在两个窗口执行 :set scb
然后滚动其中任何一个,另一个也会滚动。

完整写法是 scrollbind ,简写为 scb

取消方法是  :set noscb

Sunday, July 18, 2010

周末小记

这个周末,看了几部电影。
《阿飞正传》
《空气人偶》
《人在冏途》

完了感觉,很庆幸自己四肢健全,而且是个人。不愁吃喝,当然啦,只是不愁基础的而已,但已足够。
人最怕的就是对比,但是,对比最能看出效果来。所以,对比完了我觉得,我还是很幸福的。

忙碌庸庸了这辈子的大部分时光,总想着能够做些改变,参加百淘让我感觉有了希望。

拥抱变化,拥有激情

这已经无敌了。

觉得,自己很空,需要多些读写。

Wednesday, June 23, 2010

ngx_lua 终于好了

终于。

无敌的晓哲和春哥,你们太强大了。
ngx_lua 在两位大侠的手里搞定了。
示例如下,看看他强大的威力吧。

location /lua {
    content_by_lua '
        local num = tonumber(ngx.var.arg_num) or 0;
        ngx.echo("num is: ", num, "\\n");

        if (num > 0) then
            res = ngx.location.capture("/lua?num="..tostring(num - 1));
            ngx.echo("status=", res.status, " ");
            ngx.echo("body=", res.body, "\\n");
        else
            ngx.echo("end");
        end 
        ';  
}

$ curl -i localhost/lua?num=5
HTTP/1.1 200 OK
Server: nginx/0.8.40
Date: Wed, 23 Jun 2010 15:28:27 GMT
Content-Type: application/octet-stream
Transfer-Encoding: chunked
Connection: keep-alive

0? is: 5
status=200 body=num is: 4
status=200 body=num is: 3
status=200 body=num is: 2
status=200 body=num is: 1
status=200 body=num is: 0
end



强大吧。
可以计算 阶乘了。
呵呵。

Thursday, March 4, 2010

debian console 下显示中文

这是个老问题。


买了个古老的 imac,跑起来太慢,就给格了装 debian,
正常安装,没有 GUI。要显示中文,怎么办?
花费了大量的时间,最后无意间解决了。

安装 jfbterm 包,debian 自带 apt-get install jfbterm 即可。
装完执行 jfbterm 就可以启动了,以后再有中文、日文、韩文 等等 都可以正常显示了。

虽然我没明白为啥,
不过能显示就好。

至于输入,一般只有写东西的时候用到,
down 了一份 vimim.vim ,在 vim 里用。



关于 linux 下中文显示的问题,一直没弄明白,
按说字符映射到屏幕上是一定需要字库的,
为啥英文字符就可以显示,中文就不行呢。
或者,系统装完以后是带了字体的,只是带的是英文字体。

而且,奇怪的是通过 ssh 连接的 linux,只要终端支持,
也是可以正常使用中文的。

难道终端只是一个壳,负责传入与传出?