为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这里的jQuery $(this)对象后面要加个下标[0]才有用啊?

为什么这里的jQuery $(this)对象后面要加个下标[0]才有用啊?

慕前端8664132 2016-10-12 17:14:11
下面是我的代码:$("#uname").blur(function(){        if($(this)[0].value==""){            alert(2)        }})//这是我慢慢误打误撞弄出来的。之前没$(this)没有加下标是没有弹框的
查看完整描述

7 回答

已采纳
?
业余奶茶品鉴师

TA贡献260条经验 获得超388个赞

$("#uname").blur(function(){
        if($(this)[0].value ==""){
            alert(2)
        }
    })
    
    //jquery方法
    $("#uname").blur(function(){
        if($(this).val()==""){
            alert(2)
        }
    })
    //jquery 方法
    $("#uname").blur(function(){
        if(this.value==""){
            alert(2)
        }
    })

上面的三种方法都可以达到你想要的效果。因为 .value 是js的方法,$(this)是jquery的方法,如果想转换,用js的 .value方法的话,就要用【0】来转化。

查看完整回答
4 反对 回复 2016-10-12
?
堂堂堂堂糖糖糖童鞋

TA贡献101条经验 获得超58个赞

jQuery对象与js对象之间的转换:

$(this)[0],这种“jQuery对象”加下标的方式可以将“jQuery对象”转换为“js对象”,这样我们就可以使用“js对象”的属性和方法了;

$(this),使用$()包装“js对象”,是一种将“js对象”转换为“jQuery对象”的方式,这样我们就可以使用“jQuery对象”的方法了。

更进一步:

$($(this)[0]),可以再次包装“js对象”为“jQuery对象”,当然可以$($(this)[0])[0],将“jQuery对象”转换为“js对象”


查看完整回答
3 反对 回复 2016-10-12
?
慕运维6514616

TA贡献103条经验 获得超37个赞


this已经指向当前操作对象了,前面加个$搞什么,又不是PHP

查看完整回答
2 反对 回复 2016-10-13
?
风声猎猎

TA贡献1条经验 获得超1个赞

可以直接使用:

this.value 

this.value 等价于 $(this)[0]

查看完整回答
1 反对 回复 2017-07-25
?
LLaaaalei_

TA贡献5条经验 获得超2个赞

原生和jq用混了这是~~~~

查看完整回答
1 反对 回复 2016-10-18
?
_bug终结者_

TA贡献89条经验 获得超16个赞

把$()去了

查看完整回答
1 反对 回复 2016-10-14
?
最后一次改名字

TA贡献32条经验 获得超105个赞

value是原生js的写法,通过get(0)或者你上面那样写,jq的写法是val();

查看完整回答
1 反对 回复 2016-10-14
  • 7 回答
  • 0 关注
  • 7902 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信