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

为什么不能用$(this)

如果用$(this).name就会返回undefined,如果用this.name就正常显示,这是为何?

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>挑战题</title>
        <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    </head>
    <body>
        <ul id="result" style="list-style:none"></ul>
        <script type="text/javascript">
        $(document).ready(function(){
           var json=[
            {"name":"小明","sex":"男","age":14,"married":false}
           ,{"name":"小红","sex":"女","age":11,"married":false}
           ,{"name":"小刚","sex":"男","age":16,"married":true}
                ];
            $.each(json,function(index,e){
               $("#result").append("<li>姓名:"+$(this).name+",性别:"+e.sex+",年龄:"+e.age+",已婚:"+e.married+"</li>"); 
            });
        });         
        </script> 
    </body>
</html>


正在回答

4 回答

  1. $(this) 返回一个Jq对象

  2. $(this)[0].name 就能访问到name

0 回复 有任何疑惑可以回复我~

这里调用的是DOM对象啊,e就相当于this选择器

0 回复 有任何疑惑可以回复我~
#1

我要SSR

$.each()与$(selector).each()不同, 后者专用于jquery对象的遍历, 前者可用于遍历任何的集合(无论是数组或对象).
2017-07-14 回复 有任何疑惑可以回复我~
#2

暮女神 提问者

我是说为什么不能用$(this)
2017-07-15 回复 有任何疑惑可以回复我~
#3

我要SSR 回复 暮女神 提问者

你用$(this)指向谁?谁都没有指定当然是返回undefined
2017-07-17 回复 有任何疑惑可以回复我~
#4

暮女神 提问者 回复 我要SSR

不是在each()方法中吗?$(this)当然指向正在被遍历的jq对象
2017-07-18 回复 有任何疑惑可以回复我~
#5

我要SSR 回复 暮女神 提问者

所以我上面没写错啊。$.each()跟$(selector).each()不同啊
2017-07-18 回复 有任何疑惑可以回复我~
查看2条回复

我说错了,不好意思啊 , each中this和e相同,jquery内部处理的,你再把他处理成jquery以后就不能直接点语法访问到name了

1 回复 有任何疑惑可以回复我~
#1

暮女神 提问者

那应该怎么访问到name呢
2017-07-12 回复 有任何疑惑可以回复我~

each函数中this已经被jQuery处理过了,已经是jquery对象了

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么不能用$(this)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信