关于$(this)的疑惑

一天要饭生活又开始啦 2013-05-29 01:17:29
jQuery.fn.tabs = function(control){
var element = $(this);
control = $(control);
element.find("li").bind("click", function(){

element.find("li").removeClass("active");
$(this).addClass("active");

var tabName = $(this).attr("data-tab");
control.find(">[data-tab]").removeClass("active");
control.find(">[data-tab='" + tabName + "']").addClass("active");
});



element.find("li:first").addClass("active");

return this;
};
var element = $(this);这句是什么意思啊,为什么还要把它转换成jquery对象啊,this不就是实例出来的一个jQuery的实例吗,还加什么$啊?
...全文
267 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 15 楼 showbo 的回复:
$.fn.tabs中的this对象已经是包装过了的,在$一次没意义。。自己log下对象就知道了
<script src="http://www.coding123.net/js/jquery.js" type="text/javascript"></script>
<input id="aa" type="text" value="123" />
    <script>
        $.fn.tabs = function () {
            console.log(this);
            console.log($(this));
        }
        $('#aa').tabs();
    </script>
书也不一定就100%正确了,而且代码演示这种错误更加多,当然在$一次也没什么
理解了,看了jquery源码,感觉new出来的jquery对象是一个jQuery.prototype.init函数的实例,实际上不是$的实例,只不过把$.prototype给了jQuery.prototype.init的原型,是吧?
  • 打赏
  • 举报
回复
$.fn.tabs中的this对象已经是包装过了的,在$一次没意义。。自己log下对象就知道了

<script src="http://www.coding123.net/js/jquery.js" type="text/javascript"></script>
<input id="aa" type="text" value="123" />
<script>
$.fn.tabs = function () {
console.log(this);
console.log($(this));
}
$('#aa').tabs();
</script>



书也不一定就100%正确了,而且代码演示这种错误更加多,当然在$一次也没什么
  • 打赏
  • 举报
回复
引用 13 楼 veryhunger 的回复:
[quote=引用 12 楼 wangwei703 的回复:] [quote=引用 11 楼 veryhunger 的回复:] [quote=引用 10 楼 wangwei703 的回复:] 用firefox debug调试下就会发现不同了 $(this)是jquery对象,this dom对象,另外$(this)[0]返回的也是dom对象
回答与本问题无关啊[/quote] 难道你问的不是this和$(this)的区别么? 是我眼花[/quote]你用firebuy测试下这个例子中的this,试试,是$对象啊[/quote]alert(this.size());就知道了
  • 打赏
  • 举报
回复
引用 12 楼 wangwei703 的回复:
[quote=引用 11 楼 veryhunger 的回复:] [quote=引用 10 楼 wangwei703 的回复:] 用firefox debug调试下就会发现不同了 $(this)是jquery对象,this dom对象,另外$(this)[0]返回的也是dom对象
回答与本问题无关啊[/quote] 难道你问的不是this和$(this)的区别么? 是我眼花[/quote]你用firebuy测试下这个例子中的this,试试,是$对象啊
ddgx 2013-05-29
  • 打赏
  • 举报
回复
引用 11 楼 veryhunger 的回复:
[quote=引用 10 楼 wangwei703 的回复:] 用firefox debug调试下就会发现不同了 $(this)是jquery对象,this dom对象,另外$(this)[0]返回的也是dom对象
回答与本问题无关啊[/quote] 难道你问的不是this和$(this)的区别么? 是我眼花
  • 打赏
  • 举报
回复
引用 10 楼 wangwei703 的回复:
用firefox debug调试下就会发现不同了 $(this)是jquery对象,this dom对象,另外$(this)[0]返回的也是dom对象
回答与本问题无关啊
ddgx 2013-05-29
  • 打赏
  • 举报
回复
用firefox debug调试下就会发现不同了
$(this)是jquery对象,this dom对象,另外$(this)[0]返回的也是dom对象
  • 打赏
  • 举报
回复
写这本书的是美国的一个环球旅行家,在旅行途中突然想到钱花的差不多了,得挣点钱,于是写本书吧,写的途中遇到各种干扰,把this写成$(this)了,看来他水平比写jquery库的差一截啊,呵呵
xuzuning 2013-05-29
  • 打赏
  • 举报
回复
var element = $(this); //这样写的原因是 control = $(control); element.find("li").bind("click", function(){ element.find("li").removeClass("active"); //这里要用到外层的对象 $(this).addClass("active"); //这个 $(this) 是套红的那个
coralandbill 2013-05-29
  • 打赏
  • 举报
回复
大神比较靠谱点
你说中文吧 2013-05-29
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
this 表示的是javascript提供的当前对象 $(this) 表示的是用jquery封装候的当前对象 this 对象可以直接访问其属性,比如 this.style.display="none" $(this) 只能使用jquery提供的方法访问,比如 $(this).css("display","none")
KK3K2005 2013-05-29
  • 打赏
  • 举报
回复
引用 4 楼 veryhunger 的回复:
引用 2 楼 showbo 的回复:
不用再$操作了,this对象已经为包装过的jquery对象了,在$一次没什么意义
是,书上那样写的,看来书上作者水平了了啊,书是mvc的javascript的富应用开发
要相信自己看到的
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
不用再$操作了,this对象已经为包装过的jquery对象了,在$一次没什么意义
是,书上那样写的,看来书上作者水平了了啊,书是mvc的javascript的富应用开发
xuzuning 2013-05-29
  • 打赏
  • 举报
回复
this 表示的是javascript提供的当前对象 $(this) 表示的是用jquery封装候的当前对象 this 对象可以直接访问其属性,比如 this.style.display="none" $(this) 只能使用jquery提供的方法访问,比如 $(this).css("display","none")
  • 打赏
  • 举报
回复
不用再$操作了,this对象已经为包装过的jquery对象了,在$一次没什么意义
whos2002110 2013-05-29
  • 打赏
  • 举报
回复
这里this是dom对象吧

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧