从has no method 'tmpl'谈起
最近做一个相对比较功能专业化的应用系统,其中今天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'谈起的更多相关文章
- 浅谈C++设计模式之工厂方法(Factory Method)
为什么要用设计模式?根本原因是为了代码复用,增加可维护性. 面向对象设计坚持的原则:开闭原则(Open Closed Principle,OCP).里氏代换原则(Liskov Substitution ...
- 再谈机器学习中的归一化方法(Normalization Method)
机器学习.数据挖掘工作中,数据前期准备.数据预处理过程.特征提取等几个步骤几乎要花费数据工程师一半的工作时间.同时,数据预处理的效果也直接影响了后续模型能否有效的工作.然而,目前的大部分学术研究主要集 ...
- 网络(最大)流初步+二分图初步 (浅谈EK,Dinic, Hungarian method:]
本文中 N为点数,M为边数: EK: (brute_force) : 每次bfs暴力找到一条增广路,更新流量,代码如下 : 时间复杂度:O(NM²): #include<bits/stdc++ ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- 浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法
在我们使用scvmm2012的时候,经常会看到群集状态变成了这样 点开看属性后,我们发现是这样 . 发现了吗?Over-committed,如果翻译过来就是资源过载,或者说资源过量使用了,那么这个状态 ...
- 归一化方法 Normalization Method
1. 概要 数据预处理在众多深度学习算法中都起着重要作用,实际情况中,将数据做归一化和白化处理后,很多算法能够发挥最佳效果.然而除非对这些算法有丰富的使用经验,否则预处理的精确参数并非显而易见. 2. ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- PPK谈JS笔记第一弹
以下内容是读书笔记,再一次温习JS好书:PPK谈JS window.load=initializePageaddEventSimple('window','load',function(){}) lo ...
随机推荐
- Unity UGUI基础之Slider、Scrollbar
Slider(滑动条):是一个主要用于形象的拖动以改变目标值的控件,他的最恰当应用是用来改变一个数值,最大值和最小值自定义,拖动滑块可在此之间改变,例如改变声音大小. Scrollbar(滚动条):是 ...
- 深入Java关键字instanceof
深入Java关键字instanceof instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口.抽象类.父类)的实例. 举个例子: public interface ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(五)
上一篇我们建立了机器人物理对象,下面我们来看看对应的逻辑代码. 进入Xcode,新建Robot和Arm类,分别继承于CCNode和CCSprite类.代码全部留空,后面再实现. 我们再看一下这个机器人 ...
- Hibernate与Spring的事务管理
什么是事务 这个问题比较大,按照我的理解就是,一个事务内的n个操作,要么全部完成,一旦有一个操作有问题,那么所有的操作都全部回滚. Jdbc的事务 首先,大家已经知道了,事务说白了就是一个词----统 ...
- 经过一段的努力,终于成为CSDN博客专家,感谢大家支持
感谢CSDN提供这么好的一个技术学习平台,通过各路大神的博客我成长了许多,同时也感谢支持我的朋友们,我会继续努力,用心去写好博客.还请继续关注我~ 谢谢!
- tomcat集群机制剖析及其生产部署选型
为什么要使用集群? 为什么要使用集群?主要有两方面原因:一是对于一些核心系统要求长期不能中断服务,为了提供高可用性我们需要由多台机器组成的集群:另外一方面,随着访问量越来越大且业务逻辑越来越复杂,单台 ...
- JVM学习笔记 -- 从一段几乎所有人代码都会犯错的代码开始
废话不多说 看看这段代码.告诉我结果: import java.io.*; class Test { public static Test t = new Test(); public Test(){ ...
- 【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型
忘的差不多了, 先补概念, 然后开始搭建集群实战 ... . 一 Hadoop版本 和 生态圈 1. Hadoop版本 (1) Apache Hadoop版本介绍 Apache的开源项目开发流程 : ...
- SpriteBuilder中不能编辑自定义类或不能给节点添加属性的解决
不能编辑自定义类 你选中一个Sub File(CCBFile)节点,在这个例子中,该节点的Custom class区域灰化禁用且不能修改.这是因为你需要在该Sub File引用的CCB文件中修改Cus ...
- 【一天一道LeetCode】#31. Next Permutation
一天一道LeetCode系列 (一)题目 Implement next permutation, which rearranges numbers into the lexicographically ...