问答详情
源自:3-2 jQuery表单事件之change事件

还是不懂这个问题

为什么要用e.target,value,而不用$(this)

提问者:唯尔半截湘妃 2016-08-30 22:01

个回答

  • timicoder
    2016-09-05 18:56:29
    已采纳

    楼主很细心嘛,学习了。去查了一下资料,currentTarget、target和this

    currentTarget    返回其事件监听器触发该事件的元素。

    target    返回触发此事件的元素(事件的目标节点)。

    this 我觉得this==currentTarget。

    下面是我的demo

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
    </head>
    <body>
        <div id="div1" style="width:200px;height:200px;border:1px solid red;">
            <input type="button" id="btn" style="width: 100px;height:30px;border:1px solid blue;">
        </div>
        <script>
            $("#btn").click(function(ev){
                console.log("currentTarget"+"-----"+ev.currentTarget);
                console.log("target"+"---------"+ev.target);
                console.log("this"+"-----"+this);
                console.log("------------------------------");
            })
            $("#div1").click(function(ev){
                console.log("currentTarget"+"-----"+ev.currentTarget);
                console.log("target"+"---------"+ev.target);
                console.log("this"+"-----"+this);
            })
        </script>
    </body>
    </html>

  • qq_迸发激情_0
    2017-12-04 10:32:01


    最主要的就是e.target是不受冒泡事件影响的,它是静态的;而this则受冒泡影响,是动态的,可以事件委托.

  • iceminit
    2016-08-31 10:37:33

    我改成$(this).val()也可以执行啊

  • 套子里的海怪
    2016-08-30 22:24:25

    this冒泡,e.target.value不冒泡

  • 吴悔mk
    2016-08-30 22:23:36

    e.target 是触发,也就是你点击的元素 比如某个div

    this是当前的元素,可能受冒泡的影响 比如body

  • 吴悔mk
    2016-08-30 22:23:23

    e.target 是触发,也就是你点击的元素 比如某个div

    this是当前的元素比如body,可能受冒泡的影响