jquery内部域访问,及其方法的声名问题
来源:互联网 发布:6s数据漫游要不要打开 编辑:程序博客网 时间:2024/06/05 09:43
首先,明白一件事,如果你定义一个JS函数,如果它不可以使用,只有两种可能。
第一种:你在JSP页面的引入出错,引入顺序的问题。
第二种:就是作用域出现了问题。
还要知道的是,什么时间你写的JS会加载进来。
<script> function testAli1(){ alert("testAli1"); }
var chen = {}; $(document).ready(function(){ function testAli2(){ alert("testAli2"); } chen.testAli3=function(){ alert("testAli3"); }; }); </script>
testAli1()这个方法会在文档加载的过程中加载进来,也就是说文档从上往下执行,执行到它的时间会自动加载进来。
而如果写在ready方法里面,会在文档全部加载进来以后,再去加载这些东西。
所以说写在里面的安全性更加高一些。
但是,它一定会引发新的问题,testAli1()这个方法是一个全局的方法,你不管在哪调用都行。
testAli2()这个方法是一个绝对的内部方法,你只可能在ready这一个方法里面调用,在其它地方调用是不可能的。
如果你想要这里面的方法在任何地方都可以调用,就要加上像这种命名空间一样的东西,加上后里面的testAli3()方法就可以调用
了,而且调用的规则是chen.testAli3()。如果说你感觉这样写怕麻烦也可以直接在里面写上window.testAli3(),这其实就相当于是说明它是一个全局的东西。
例子:
(1)<a href="javascript:void(0)" onclick="testAli1()">测试1</>
(2)<a href="javascript:void(0)" onclick="testAli2()">测试2</>
(3)<a href="javascript:void(0)" onclick="testAli3()">测试3</>
(1)可正常调用 (2)报错 testAli2 not defined (3)正常调用
如果两种情况都试之后 ,还是不行,就只有最后一种情况了,就是命名冲突,你可以把命名空间或者方法这些东西给改一个名字,试一下。十分重要。
所以JS里面的不能执行的问题,就是你加载顺序写错了,这点可以一点一点的测试,十分重要。
还有就是可以调用了内部作用域里面的方法。
附:
在用Jquery的时候避免不了ready函数的使用,其实这个ready函数的作用不仅仅是在文档加载完毕后再进行相应js脚本的加载,以保证一些元素在js脚本使用以前就已经在HTML文档中存在了(避免一些报错)。其实ready函数还有一个作用就是实际上ready函数无形中已经形成了一个内部域,这个内部域里的函数的对外是不可见的。但是如果想要ready作用域里定义的函数也可以被外部调用,只要这么设定就搞定了:
window.funname=function(){ //do something };
- jquery内部域访问,及其方法的声名问题
- 腾讯邮箱的内部访问导致的激活问题及其解决
- NSString类的使用及其内部方法
- 类模板的声名
- jquery实现跨域访问的方法
- JQuery的ajax跨域访问方法
- Jquery ajax跨域访问的问题
- 分析jQuery的内部插入方法
- 关于jquery的ajax方法之后代码和内部代码执行问题
- 声名与定义的区别
- 关于抽象类及其方法的访问
- 多线程访问文件问题中WaitForSingleObject方法的使用,及其效率!
- WCF声名未知的Type问题与KonwnType属性的运用
- jquery 跨域访问问题
- 在类里面声名一个私有方法
- Activity访问Service内部方法
- 网外(Internet)访问代理服务器内部的实现方法
- 公网(Internet)访问局域网内部主机的实现方法
- 谷歌音乐关闭了??
- SRM 557 小记
- HTML 5 Canvas vs. SVG
- Spring 框架的设计理念与设计模式分析(2)
- mainwindow.obj:-1: 错误:LNK2019: 无法解析的外部符号 "__declspec(dllimport) public:
- jquery内部域访问,及其方法的声名问题
- 又见一帘幽梦
- android - 监听APK文件的安装、卸载、重装。
- 让Sql Plus环境变量的设置永久生效
- C++宽字符处理函数 与 普通函数 对照表
- c#使用Windows.Forms里面计时器和System.Timers里面的计时器
- C#(64位系统) 解决"未能加载文件或程序集,或它的某一个依赖项..."
- TI DM368 YUV420之NV12转IYUV小结
- ORACLE 11g 2 研究,redhat5.4