父元素与子元素的点击事件影响问题

例如以下的代码:
html:

<div class="elementI" style="height: 100px;width: 100px;border: 1px solid red;">
    父元素
    <div class="elementII" style="height: 50px;width: 50px;border: 1px solid black;">子元素</div>
</div>
<script type="text/javaScript">
    /*子元素绑定的事件*/
    $(".elementI").click(function(){
        alert("elementI");
    });
    /*父元素绑定的事件*/
    $(".elementII").click(function(){
        alert("elementII");
    });

</script>

达到的目的是,点击子元素区域只会触发子元素的事件,输出“elementI”,点击除“子元素”外的“父元素”区域输出“elementII”.

$(".elementI").click(function(event){
    //谷歌、火狐兼容,IE不兼容
    //alert("elementI");
    //event.stopPropagation()//阻止事件冒泡
    //IE下则使用
    //event.cancelBubble = true;
    if ((navigator.userAgent.indexOf('MSIE') >= 0)&& (navigator.userAgent.indexOf('Opera') < 0)){ 
        event.cancelBubble = true;
    }else{
        event.stopPropagation();
    }
});

 //在事件处理函数中添加event参数(或者任一个参数),当事件触发时,也就创建了事件对象,该事件对象只有该事件处理函数才能访问到,当事件处理函数运行结束时,事件对象自动删除
$(Element).click(function(event){
     ..................
})
当在含有事件对象的处理函数中返回falsereturn false;),作用是阻止事件冒泡并且阻止元素默认行为。(元素的默认行为比如超链接的跳转、表单的提交等)
$(Element).click(function(event){
     ..................
     return false;
})​
要实现父元素子元素点击事件同时生效,您可以使用事件冒泡和事件捕获机制来处理。 事件冒泡是指事件从最具体的元素开始触发,然后逐向上冒泡到父元素,直至根元素。而事件捕获则是相反的过程,事件从根元素开始触发,然后逐向下捕获至最具体的元素。 默认情况下,事件会按照事件冒泡方式进行处理。因此,当您在子元素上触发点击事件时,该事件将首先在子元素上触发,然后冒泡到父元素,最后到达根元素。 您可以通过在父元素上添加事件处理程序来同时处理父元素子元素点击事件。以下是一个示例: HTML: ```html <div id="parent"> <div id="child"></div> </div> ``` JavaScript: ```javascript document.getElementById('parent').addEventListener('click', function () { console.log('父元素被点击'); }); document.getElementById('child').addEventListener('click', function (event) { event.stopPropagation(); // 阻止事件冒泡 console.log('子元素被点击'); }); ``` 在上述代码中,我们分别给父元素子元素添加了点击事件处理程序。在子元素点击事件处理程序中,我们使用了 `event.stopPropagation()` 方法来阻止事件冒泡,从而避免父元素触发相同的点击事件。 这样一来,当您在子元素上点击时,子元素点击事件会被触发,并阻止事件冒泡至父元素。同时,父元素点击事件也会触发。 希望以上信息对您有所帮助!如果您有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值