这个$(this)为什么不是$(".tt"),而是window?怎么让$(this)取到$(".tt")?帮忙改下代码
作用域不一样,$(".tt").datagrid(){ $(this). }
你这里的$(".tt")没有错,可是$(this)就是指的是window,而并非你想的在{}作用域里,就变成$(".tt")
把var tt=$(".tt"),缓存起来,以后直接用tt,这样以后也不用查找,效率更高。
可以找本js的书,看看~
谢谢你的回复。
$(".tt")是class选择器,我想在每个对象的datagrid()中都能找到自己对应的属性。
但$tt取到的是一堆~
@Invictus: 定义initDatagrid方法时候加个参数(ele) 在调用initDatagrid方法的时候传进来一个this,然后就可以$(ele),就等同于$(this)了
@Invictus: 如果$('.tt')是多个,可以map一下$('.tt')。然后把$(this)缓存起来
this===window
这个跟 javascipt 本身语法设计有关,可能理解起来有点不一样。
如果这样写
$(".btn").click(function (){
$(this)就代表 按钮
});
this指的是当前作用域的对象,比如你这样写:
$("A").click(function(){
var txt=$(this).text();
})
这里的this指的就是你点击的那个A,而如果你直接写$(this),js在查找作用域的时候是从下往上找的,它一层一层往上找,最终找到的是window,这个是顶级的作用域
建议你去看看一下js的作用域跟原型链