jacksplwxy

(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 

posted on 2017-03-31 17:39  jacksplwxy  阅读(336)  评论(0编辑  收藏  举报

导航