最近做一个相对比较功能专业化的应用系统,其中今天Leader提出的功能修改需求有点smart table的意思,其中有个界面修改由于用Dom操作太麻烦了,于是想用用很久之前在学习jQuery API中看到的js模板,这个东东好像目前在一些JS MVC实现中很流行。

1、第一次看到"has no method 'tmpl'"这个提示,G了一下,结果第一个结果英文帖子说tmpl不属于jquery的核心内容,属于插件,需要另外下载jquery-tmpl插件,据说这是微软贡献的开源插件,host在github上,下载地址:https://github.com/jquery/jquery-tmpl

2、把上面那个插件的min.js加载上,仍然函数不存在的提示,开始的时候以为是函数的调用方式有问题,于是采用插件文档中的Demo写法,仍然提示函数不存在,后来动脑袋想了想,发现了其中问题:由于我目前开发的模块和网站整体的JS引用存在区别,所以目前模块的JS引用没有写在foot.jsp里,而是写在side.jsp里面,有些mainContent页面里面的JS代码存在对库的依赖问题,于是在mainContent前面部分,可能会重复地放某些JS库文件,比如此处的jQuery.min.js,而我的tmpl.min.js由于只在这个页面内用一下,于是放在mainContent.jsp中jquery.js引用的后面,而我的页面整体布局采用的固定布局方式,sidebar虽然在mainContent的左面,但是采用负值maring-left的布局方式,side.jsp文件代码实际页面中是在mainContent的后面,导致我的tmpl.js实际是在两个jquery.js的中间,tmpl给$对象添加的tmpl函数,在后面那个jQuery中又被重置了,所以找不到啊。Ok,这个提示的问题就此解决。同时稍微深入谈一下JS加载依赖这个问题,其实如果所有JS里面的函数都暴露在全局,不存在调用某个对象的函数属性问题的话,前前后后都无所谓,因为是平行的,而且执行都是加载完的事件引发,依赖的是那部分,依赖的其实是那些在函数外面的代码,也就是那部分在加载的时候就要执行的代码,这些代码之间才存在真正的依赖关系:也就是后面执行的代码要依靠前面代码的执行结果,这和静态语言比如C之类的include是有区别的,C的include解决的是语言编译时的引用依赖,而JS中的依赖实际是执行关系的依赖,说白了:后面的代码用到了前面代码的计算结果,而不是仅仅那么一个引用标记。

3、前面那个问题算是解决了,下面讲讲其他几个今天碰到的JS问题,先将讲dblclick事件的绑定问题,白天在单位做的,那个时间CSDN博客访问有问题,晚上回家写,代码也不在身边,可能细节上不太全,有兴趣的人凑活看吧,第一次实现的时候,用的就是最基本的方法,用元素on属性解决的,我在Chrome下做的测试,结果上线以后,IE下基本无效,G了一下,发现IE和其他浏览器在这事件上语法不一样,于是乎用jQuery的dblclick()方法绑定事件函数解决跨浏览器兼容问题,结果还发现另外一个问题,由于事件冒泡模型的区别,之前的事件处理函数在某些情况下会出现设定外的意外处理情况,于是乎用event.stopPropagation();解决了这个问题。

4、在后续的另外一个blur事件处理函数中,采用元素on属性方式下,在IE中,jQuery语法的的event对象好像无效,event.target是个null,由于这个事件函数的target是动态添加的,于是用jQuery的live函数做了事件绑定处理,解决了event无效的问题,后来想了想,可能jQuery的event跨浏览器兼容要想生效,可能必须得用它的函数做事件绑定,否则它的阔浏览器处理可能插不进来。具体估计得看它的代码才能确认。

5、button元素的Type属性的默认值问题,昨天碰到预设的普通button在点击之后,不但激发了click事件,在事件处理之后还自动提交了表单,好像之前碰到过这个问题,当时只是解决了,没有思考问题原因,昨天我觉得可能是前面说的问题,但是只是加了明文的type属性,没有做确认,今天写了段代码试了一下,果然是啊,button元素在IE里面的默认Type属性值是button,在Chrome和Firefox里面的默认属性值是submit。所以用这个元素的时候,最好还是写明其Type属性值。

从has no method 'tmpl'谈起的更多相关文章

  1. 浅谈C++设计模式之工厂方法(Factory Method)

    为什么要用设计模式?根本原因是为了代码复用,增加可维护性. 面向对象设计坚持的原则:开闭原则(Open Closed Principle,OCP).里氏代换原则(Liskov Substitution ...

  2. 再谈机器学习中的归一化方法(Normalization Method)

    机器学习.数据挖掘工作中,数据前期准备.数据预处理过程.特征提取等几个步骤几乎要花费数据工程师一半的工作时间.同时,数据预处理的效果也直接影响了后续模型能否有效的工作.然而,目前的大部分学术研究主要集 ...

  3. 网络(最大)流初步+二分图初步 (浅谈EK,Dinic, Hungarian method:]

    本文中  N为点数,M为边数: EK: (brute_force) : 每次bfs暴力找到一条增广路,更新流量,代码如下 : 时间复杂度:O(NM²): #include<bits/stdc++ ...

  4. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  5. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  6. 浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法

    在我们使用scvmm2012的时候,经常会看到群集状态变成了这样 点开看属性后,我们发现是这样 . 发现了吗?Over-committed,如果翻译过来就是资源过载,或者说资源过量使用了,那么这个状态 ...

  7. 归一化方法 Normalization Method

    1. 概要 数据预处理在众多深度学习算法中都起着重要作用,实际情况中,将数据做归一化和白化处理后,很多算法能够发挥最佳效果.然而除非对这些算法有丰富的使用经验,否则预处理的精确参数并非显而易见. 2. ...

  8. 浅谈Java中的equals和==(转)

    浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...

  9. PPK谈JS笔记第一弹

    以下内容是读书笔记,再一次温习JS好书:PPK谈JS window.load=initializePageaddEventSimple('window','load',function(){}) lo ...

随机推荐

  1. oracle 选取出现次数最多的前5条数据

    SELECT * FROM ( SELECT PROJECT_LISTING.MATERIAL, COUNT (*) AS "出现次数" FROM PROJECT_LISTING ...

  2. SpriteBuilder实现2D精灵光影明暗反射效果(二)

    使用SpriteBuilder新建一个项目,将默认MainScene.ccb中的内容统统删掉,此时场景应该是一片漆黑. 将官网中的2张图片以及我自己做的2张图片全部拖拽到其文件视图中去: 其中加_n后 ...

  3. React Native入门教程2 -- 基本组件使用及样式

    在上一篇文章中,我们学会了如何搭建React Native的环境(React Native入门教程(笔记) 1 – 开发环境搭建),不知道你们是否搭建好了呢,如果还没有,那么快动起小手,来体验RN带给 ...

  4. Cocos2D:塔防游戏制作之旅(十五)

    Yes,貌似添加了好多的代码啊 ;] ,在你添加更多代码时,你可能注意到一些Xcode中的一些警告.首先你先忽略这些警告,我们先添加少量最终缺失的部分,然后再来解释上面代码做了什么! 在Enemy.m ...

  5. 04-GIT TortoiseGit冲突和补丁演示 案例演示

    TortoiseGit安装下载 http://download.tortoisegit.org/tgit/1.8.12.0/ 或https://code.google.com/p/tortoisegi ...

  6. Guava 教程2-深入探索 Google Guava 库

    原文出处: oschina 在这个系列的第一部分里,我简单的介绍了非常优秀的Google collections和Guava类库,并简要的解释了作为Java程序员,如果使用Guava库来减少项目中大量 ...

  7. 谈谈Ext JS的组件——布局的使用方法续一

    盒子布局 盒子布局主要作用是以水平(Ext.layout.container.HBox)或垂直方式(Ext.layout.container.VBox)来划分容器区域.这也是比较常有的布局方式. 使用 ...

  8. C++ Primer 有感(多重继承与虚继承)

    1.多重继承的构造次序:基类构造函数按照基类构造函数在类派生列表中的出现次序调用,构造函数调用次序既不受构造函数初始化列表中出现的基类的影响,也不受基类在构造函数初始化列表中的出现次序的影响.2.在单 ...

  9. 经过一段的努力,终于成为CSDN博客专家,感谢大家支持

    感谢CSDN提供这么好的一个技术学习平台,通过各路大神的博客我成长了许多,同时也感谢支持我的朋友们,我会继续努力,用心去写好博客.还请继续关注我~ 谢谢!

  10. 怎样将Android手机弄死机?

    将Android手机弄死机目前知道有两种方式: 第一种: 以root权限在shell中执行 stop 通过 start 但是这种串口还是可以用 第二种: suecho "c" &g ...