首页 新闻 搜索 专区 学院

$(this)取值的问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-12-08 17:20

这个$(this)为什么不是$(".tt"),而是window?怎么让$(this)取到$(".tt")?帮忙改下代码

Invictus的主页 Invictus | 初学一级 | 园豆:76
提问于:2012-11-21 10:47
< >
分享
最佳答案
0

作用域不一样,$(".tt").datagrid(){  $(this).  }

你这里的$(".tt")没有错,可是$(this)就是指的是window,而并非你想的在{}作用域里,就变成$(".tt")

把var tt=$(".tt"),缓存起来,以后直接用tt,这样以后也不用查找,效率更高。

可以找本js的书,看看~

 

收获园豆:5
叶小党 | 菜鸟二级 |园豆:481 | 2012-11-21 11:32

谢谢你的回复。

$(".tt")是class选择器,我想在每个对象的datagrid()中都能找到自己对应的属性。

但$tt取到的是一堆~

Invictus | 园豆:76 (初学一级) | 2012-11-21 11:39

@Invictus: 定义initDatagrid方法时候加个参数(ele)   在调用initDatagrid方法的时候传进来一个this,然后就可以$(ele),就等同于$(this)了

叶小党 | 园豆:481 (菜鸟二级) | 2012-11-21 11:55

@Invictus: 如果$('.tt')是多个,可以map一下$('.tt')。然后把$(this)缓存起来

荒漠千蝶 | 园豆:200 (初学一级) | 2012-11-28 12:07
其他回答(3)
0

this===window

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-21 15:06
0

这个跟 javascipt 本身语法设计有关,可能理解起来有点不一样。

如果这样写

$(".btn").click(function (){

  $(this)就代表 按钮

});

geass.. | 园豆:1701 (小虾三级) | 2012-11-25 20:47
0

this指的是当前作用域的对象,比如你这样写:

$("A").click(function(){

  var txt=$(this).text();

})

这里的this指的就是你点击的那个A,而如果你直接写$(this),js在查找作用域的时候是从下往上找的,它一层一层往上找,最终找到的是window,这个是顶级的作用域

建议你去看看一下js的作用域跟原型链

ljcheibao | 园豆:132 (初学一级) | 2012-12-04 09:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册