• (O)jquery:e.target和this的区别(如何使事件委托后,被选元素的子元素不被选中)


    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <style>
    li{
    border: 1px solid #ccc;
    }
    div{
    border: 1px solid green;
    }
    </style>
    </head>
    <body>
    <ul name='grandfather'>
    1
    <li name='father'>
    1-1
    <div name='son'>
    1-1-1
    <div>1-1-1-1</div>
    <div>1-1-1-2</div> 
    </div>
    <div name='son'>
    1-1-2
    <div>1-1-2-1</div>
    <div>1-1-2-2</div> 
    </div>
    <div name='son'>
    1-1-3
    <div> 1-1-3-1</div>
    <div> 1-1-3-2</div> 
    </div>
    </li>
    <li>
    1-2
    <div>1-2-1</div>
    <div>1-2-2</div>
    </li>
    <li>
    1-3
    <div> 1-3-1</div>
    <div> 1-3-2</div>
    </li>
    </ul>
    <script src="js/jquery-1.11.3.js"></script>
    <script>
    $('ul').on('click','li',function(event){
    //event.stopPropagation();
    console.log('this是'+$(this).attr('name'))
    console.log('$this的儿子的name是'+$(this).children().attr('name'))
    $(this).children().css('color','red');
    });
    </script>
    </body>
    </html>
    
    

    上面例子说明:

    ·e.target是点击的目标元素;

    ·this是指向事件所绑定的元素(这里是li,click后面那个);

    有人说,this也是指向点击的目标元素,只是因为冒泡而最终指向事件所绑定的元素。但当上述代码中加入event.stopPropagation()后,冒泡被阻止,this与e.target效果并不一样,

    所以this并不是指向点击的目标元素,而是直接指向事件所绑定的元素。

    下面例子,通过有无阻止冒泡加强说明:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>e.target</title>
        <script src="js/jquery-1.11.3.js"></script>
    </head>
    <body>
    <div id="temp"></div>
    <ul class="JQ-content-box" style="padding:20px; background:#FFFFFF" name="祖先1">
        祖先1
        <li name="祖先2">
            祖先2
            <ul name="祖先3">
                祖先3
                <li name="这是公告标题1">这是公告标题1</li>
                <li name="这是公告标题2">这是公告标题2</li>
                <li name="这是公告标题3">这是公告标题3</li>
                <li name="这是公告标题4">这是公告标题4</li>
            </ul>
        </li>
    </ul>
    <script>
        $(function(){
            $("ul").on("click",function(e){
                //e.stopPropagation();
                console.log('e.target为:'+$(e.target).attr('name'));
                console.log('this为:'+$(this).attr('name'));
                $("#temp").html("clicked: " + e.target.nodeName);
                $(e.target).css("color","#FF3300");
            })
        });
    </script>
    </body>
    </html>

    转载请注明出处:http://www.cnblogs.com/jacksplwxy/p/6652558.html 

  • 相关阅读:
    hdu 3786 寻找直系亲属
    about the plan
    2013 ACM/ICPC Asia Regional Online —— Warmup1 1005 Balls Rearrangement
    poj 1833 给poj跪了 字典排序
    20170630总结
    20170701总结
    20170628总结
    20170629总结
    20170626总结
    20170627总结
  • 原文地址:https://www.cnblogs.com/jacksplwxy/p/6652558.html
Copyright © 2020-2023  润新知