首页 新闻 会员 周边

关于javascript里this的问题,求大神指点

0
悬赏园豆:100 [待解决问题]

第一次点击test2,再点确定结果正确的,

可是继续点test1再点确定,为什么第一次结果还在里面?如果不要出现第一次结果,此处要怎么改呢?

夜皇帝的主页 夜皇帝 | 初学一级 | 园豆:89
提问于:2016-04-09 18:27
< >
分享
所有回答(3)
0

你要先用unbind移除click事件再绑定click事件

上帝之城 | 园豆:2549 (老鸟四级) | 2016-04-09 21:03
0

每次运行jquery的click方法都会为对应的dom的点击事件注册一个新的方法,而之前注册的方法也还是存在的,你的test2的时候为确定按钮的点击事件注册了一个方法,再点test1的时候又为确定按钮注册了一个新的方法,你最后点击确定按钮的时候就会触发这两个方法,所以就会有两个输出结果了。

为了达到楼主想要的结果,必须在为确定按钮绑定新的点击事件之前清除之前的绑定,具体改成如下代码就可以了。

sure:function() {
    var self = this;
    $('#sure').unbind('click').click(function(){
        console.log(self);
    });
}

楼主对this指针的理解是正确的,用闭包的方式保存this指针的做法也是对的。

脚本王子 | 园豆:779 (小虾三级) | 2016-04-10 19:09
0

$("#sure").click();

绑定了2次

这个应该在外部绑定 

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-04-11 10:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册