+ -
当前位置:首页 → 问答吧 → 【求助】有关jquery事件中调用对象方法【在线等】

【求助】有关jquery事件中调用对象方法【在线等】

时间:2010-05-05

来源:互联网

我定义一个JS对象如下:
复制代码
  1. test = function(config){
  2.        this.t1 = function(){
  3.               alert("t1");
  4.        }
  5.        this.t2 = function(){
  6.               alert("t2");
  7.               this.t1();      
  8.        }
  9.        this.t3 = functin(){
  10.               alert("t3");
  11.               $("#btn_t1").click(function(){
  12.                              this.t1();//会提示找不到
  13.               });
  14.         }
  15. }


如果我把t3修改一下变成这样:
复制代码
  1. this.t3 = function(){
  2.        alert("t3");
  3.        var t1 = this.t1;
  4.        $("btn_t1").click(function(){
  5.                   t1();//这样是可以的
  6.         });
  7. }

就可以调用到t1
但是如果t3里我想调用t2并且通过t2去调用t1的时候,t1就会调用不到。如:
复制代码
  1. this.t3 = function(){
  2.         alert("t3");
  3.         var t2 = this.t2;
  4.         $("btn_t1").click(function(){
  5.                    t2();//这样是可以的,但是t2里是调用不到t1
  6.         });
  7. }


应该this的问题,不过具体要如何修改呢,请各位帮帮忙 多谢了。

作者: viperasi   发布时间: 2010-05-05

作用域的问题。。。。。。

作者: ywqbestever   发布时间: 2010-05-05

那要如何修改呢???
而且t1的作用域  跟  click里面那个function的作用域 之间有什么关系呢??

非常感谢

作者: viperasi   发布时间: 2010-05-05

看了半天发现个问题,click里面的this应该是指触发click事件的那个元素吧~

作者: jokeykiss   发布时间: 2010-05-05

没错,经JS高手指点,问题解决,还是自己JS太不熟悉了。
需要在对象内部定义一个常用方法的定义。
如下:
复制代码
  1. test = function(config){
  2.        this.t1 = function(){
  3.               alert("t1");
  4.        }
  5.        this.t2 = function(){
  6.               alert("t2");
  7.               t();    
  8.        }
  9.        this.t3 = functin(){
  10.               alert("t3");
  11.               var tt = this.t2;
  12.               $("#btn_t1").click(function(){
  13.                           tt();
  14.               });
  15.         }
  16.        var t = this.t1;//必须在最后面
  17. }

作者: viperasi   发布时间: 2010-05-05

热门下载

更多