手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:jquery

笔记:json_encode和jquery等

一些笔记
1、json_encode与json_decode的。开花石头在村里说,如果json_encode是字符串,那么在解码的时候还是字符串而不是数组,这点与手册上写的不太一样(是指json_decode的第二个参数是true的情况)
    具体我没有测试,我想石头既然能够发出来那么一定是有这种情况发生,因此算是做个笔记

2、jquery。在使用$('.xxx').hover时,如何知道当前hover对象在整个$('.xxx')对象中的索引值。事实上,我早就知道有$('li').index()之类的用法,但真的一次都没有成功过。简单的例子:

JavaScript代码
  1. $('#test li').hover(function(){  
  2. alert( $('#test li').index(this) );  
  3. },function(){  
  4.  //...  
  5. });  

差不多就是这样。了解到索引值是多少后,就可以针对它们做很多事。$("xxx:eq("+index+")").text()等操作都可以操作了。

3、在InfoQ上看到有为PHP用户写的AS简单教程(InfoQ上的PDF下载时为显示404,请使用此链接:http://www.riameeting.com/magazine/pdf/RIAMeetingWeeklyReportNum24.pdf),这个版本是在线的,http://blog.csdn.net/lihe111/archive/2010/01/14/5189572.aspx

4、还是InfoQ,领域驱动设计这本书的简化版,原书我有,只是看infoQ上介绍说,这几章是精选出来的。因此想简单了解的话,确实不错:http://www.infoq.com/resource/minibooks/domain-driven-design-quickly/zh/pdf/dddquickly-chinese-version.pdf

5、对于WEB开发人员来说,dreamweaver和fireworks等是必备工具,如果不是专业的前端人员,d8和f8就足够了。而且很小,只有100M都不到。因为这些不是正版所以我不提供下载地址。

Tags: json, jquery

将Yiiframework与JQuery easyUI整合使用

jquery easyUI框架是国内某JS牛人写的仿extJS的框架。比较简单的实现一些功能,虽然目前还是有一些BUG,但将就着用用,也还能够接受。
YiiFramework是国内某PHP牛人写的php框架,哦,好象人不在国内。最近用的人较多。本人比较喜欢他们提供的虚拟机(只有16M,当然,安装后达到100多M)

随便的整合了一下,目前是这个情况。

大小: 47.73 K
尺寸: 500 x 302
浏览: 2464 次
点击打开新窗口浏览全图

几个问题需要注意一下的

1、layout的时候要注意。因为easyUI框架里面的页面也需要用到jquery,因此在布局的时候得考虑header部分

2、登录框,与1的条件相关

3、$this->render与$this->renderPartial ,renderPartial是不渲染任何模版的。如果你不想用layout的时候,可以用这个renderPartial方法

其它的就属于一些小事了,比如菜单可以用json_encode输出之类的。前两天还写了一个jquery easyUI这个outlook式的menu改进。

整体用下来还算比较方便

Tags: yii, jquery, easyui

jQuery EasyUI Demo 修正

对秀才的demo做了点简单的修正。
1、index.html中的
var _menus = { menu object };
改为
var _menus = [{xx}];
这样的好处是,如果json是生成而来的也不受影响

2、修改outlook.js
在 InitLeftMenu()方法 增加一个判断:
    if( typeof _menus[0] != 'object'){
        alert('左侧菜单加载失败,请检查菜单数据来源');
        return ;
    }
搜索 _menus,改为_menus[0]

--------------------------
理由,因为大多数时间菜单是用程序生成的。如果不用[]包住就可能会出现
var _menus = ;
function test(){}
这样,语法是错误的。用[]进行一下容错。
-------------------------
demo也不错,提供下载,但我在这个压缩包里没有进行修正【请需要的朋友自己修正吧】
作者:疯狂秀才
网站:http://hxling.cnblogs.com
Demo:jquery-easyui 1.1 demo 修正.rar

Tags: jquery, easyui, demo, 修正

取消radio的选中状态

一个简单的例子,是懒宝宝让我帮忙的。因为我自己也注意到了,radio在选中后,一般无法取消,查了一下google,发现还是有方法 的。因此,立马解决了:

XML/HTML代码
  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>  
  2. <table class="rs" border="0" cellspacing="0" cellpadding="0">  
  3.           <tr>  
  4.             <td>HIV :阴  
  5.               <input type="radio" name="hiv[0]" value="HIV:阴" union="yin"/>  
  6.               阳  
  7.               <input type="radio" name="hiv[0]" value="HIV:阳" union="yang" /></td>  
  8.             <td>梅毒:阴  
  9.               <input type="radio" name="hiv[1]" value="梅毒:阴" union="yin" />  
  10.               阳  
  11.               <input type="radio" name="hiv[1]" value="梅毒:阳" union="yang" /></td>  
  12.             <td>疱疹:阴  
  13.               <input type="radio" name="hiv[2]" value="疱疹:阴" union="yin" />  
  14.               阳  
  15.               <input type="radio" name="hiv[2]" value="疱疹:阳" union="yang" /></td>  
  16.             <td>淋病:阴  
  17.               <input type="radio" name="hiv[3]" value="淋病:阴" union="yin" />  
  18.               阳  
  19.               <input type="radio" name="hiv[3]" value="淋病:阳" union="yang" /></td>  
  20.           </tr>  
  21.           <tr>  
  22.             <td>非淋:阴  
  23.               <input type="radio" name="hiv[4]" value="非淋:阴" union="yin" />  
  24.               阳  
  25.               <input type="radio" name="hiv[4]" value="非淋:阳" union="yang" /></td>  
  26.             <td>湿疣:阴  
  27.               <input type="radio" name="hiv[5]" value="湿疣:阴" union="yin" />  
  28.               阳  
  29.               <input type="radio" name="hiv[5]" value="湿疣:阳" union="yang" /></td>  
  30.             <td>丙肝:阴  
  31.               <input type="radio" name="hiv[6]" value="丙肝:阴" union="yin" />  
  32.               阳  
  33.               <input type="radio" name="hiv[6]" value="丙肝:阳" union="yang" /></td>  
  34.             <td><a style="cursor:pointer;" id='allyin'>全阴</a> <a style="cursor:pointer;" id='allyang'>全阳</a> <a id='allempty' style="cursor:pointer;">重填</a>   
  35. <script>  
  36. $(function(){  
  37.     $('#allyin').click(function(){  
  38.         $(':input[union="yin"]').attr('checked','checked');  
  39.     });  
  40.     $('#allyang').click(function(){  
  41.         $(':input[union=yang]').attr('checked','checked');  
  42.     });  
  43.     $('#allempty').click(function(){  
  44.         $(':input[union=yang]').each(function(){  
  45.             $(this).attr('checked','checked');  
  46.             var tmp = $(this)[0];  
  47.             tmp.checked = false;  
  48.             tmp = null;  
  49.         })  
  50.     });  
  51. });  
  52. </script></td>  
  53.           </tr>  
  54.         </table>  
因为用jquery的话,选中radion的方法很方便。所以,就尝试用这种方式解决了。。。但是用jquery无法取消checked状态,只能用原生js的方式才行(jquery是把元素都转换为对象,而不是DOM对象)

Tags: jquery, radio, checked

jQuery的事件绑定命名空间

jQuery的bind的函数在实际应用中用的不是特别多,只是他可以绑定一个事件,但不会即时触发,也可以通过unbind来解除绑定。在没有看到这篇文章之前,我一直不知道原来bind也可以有命名空间。事实上,我看完这篇文章后,再去翻了一下手册,也才发现了一点点的注释。但手册也仅仅是一句话就带过去了。没有过多的深究,或许他认为命名空间这玩意很简单,没有必要多解释?

先看手册,由于bind方法有三个参数(type,[data],fn),所以手册上这么介绍:

XML/HTML代码
  1. .bind() 方法是用于往文档上附加行为的主要方式。所有JavaScript事件对象,比如focus, mouseover, 和 resize,都是可以作为type参数传递进来的。   
  2.   
  3. jQuery还提供了一些绑定这些标准事件类型的简单方式,比如.click()用于简化.bind('click')。一共有以下这些:blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error 。   
  4.   
  5. 任何作为type参数的字符串都是合法的;如果一个字符串不是原生的JavaScript事件名,那么这个事件处理函数会绑定到一个自定义事件上。这些自定义事件绝对不会由浏览器触发,但可以通过使用.trigger()或者.triggerHandler()在其他代码中手动触发。   
  6.   
  7. 如果type参数的字符串中包含一个点(.)字符,那么这个事件就看做是有命名空间的了。这个点字符就用来分隔事件和他的命名空间。举例来说,如果执行 .bind('click.name', handler) ,那么字符串中的 click 是事件类型,而字符串 name 就是命名空间。命名空间允许我们取消绑定或者触发一些特定类型的事件,而不用触发别的事件。参考unbind()来获取更多信息。   
  8.   
  9. 当一个事件传到一个元素上,所有绑定在上面的针对哪个事件的处理函数都会触发。如果注册了多个事件处理函数,总是按照绑定的顺序依次触发。当所有绑定的事件处理函数执行完毕后,事件继续沿着普通的事件冒泡途径上浮。   
Zeal这么理解,并解析了上面的一段:
http://www.zeali.net/entry/649
  1. jQuery的 bind / unbind 方法应该说使用很简单,而且大多数时候可能并不会用到,取而代之的是直接用 click / keydown 之类的事件名风格的方法来做事件绑定操作。  
  2.   
  3. 但假设如下情况:需要在运行时根据用户交互的结果进行不同click事件处理逻辑的绑定,因而理论上会无数次对某一个事件进行 bind / unbind 操作。但又希望 unbind 的时候只把自己绑上去的处理逻辑给释放掉而不是所有其他地方有可能的额外的同一事件绑定逻辑。  
  4.   
  5. 这时候如果直接用 .click() / .bind('click') 加上 .unbind('click') 来进行重复绑定的话,被 unbind 掉的将是所有绑定在元素上的 click 处理逻辑,潜在会影响到该元素其他第三方的行为。当然如果在bind的时候是显示定义了function变量的话,可以在unbind的时候提供 function作为第二个参数来指定只unbind其中一个处理逻辑,但实际应用中很可能会碰到各种进行匿名函数绑定的情况。  
  6.   
  7. 对于这种问题,jQuery的解决方案是使用事件绑定的命名空间。即在事件名称后添加 .something 来区分自己这部分行为逻辑范围。  
  8.   
  9. 比如用 .bind('click.myCustomRoutine',function(){...}); 同样是把匿名函数绑定到 click 事件(你可以用自己的命名空间多次绑定不同的行为方法上去),当unbind的时候用 .unbind('click.myCustomRoutine') 即可释放所有绑定到  .myCustomRoutine 命名空间的 click 事件,而不会解除其他通过 .bind('click') 或另外的命名空间所绑定的事件行为。  
  10.   
  11. 同时,使用命令空间还可以让你一次性 unbind 所有此命名空间下的自定义事件绑定,通过 .unbind('.myCustomRoutine') 即可。  
  12.   
  13. 要注意的是,jQuery的命名空间并不支持多级空间。因为在jQuery里面,如果用 .unbind('click.myCustomRoutine.myCustomSubone') ,解除的是命名空间分别为 myCustomRoutine 和 myCustomSubone 的两个并列命名空间下的所有 click 事件,而不是 "myCustomRoutine 下的 myCustomSubone 子空间"。  

如此看来,命名空间还是有点用的。只是不知道会有多少人用得上这个功能(不开发插件的人,估计永远用不到吧?)我也是仅作一下笔记而已

Tags: jquery, bind, 命名空间