JS事件冒泡解决办法

<div id="div1">
    <div id="div2">
        <input type="button" value="按钮"/>
    </div>
</div>

  

$(function(){
    $("div1").click(function(){
       alert("DIV1");
    });

    $("div2").click(function(){
       alert("DIV2");
    });

    $(":button").click(function(){
       alert("按钮");
    });
});

  如果点击按钮将会依次触发3个事件:按钮点击事件=>div2点击事件=>div1点击事件

解决办法:

$(function(){
    $("div1").click(function(event){
       if(event.target==this){
       }else{
            alert("DIV1");
        }
    });

    $("div2").click(function(event){
       if(event.target==this){
       }else{
            alert("DIV2");
        }
    });

    $(":button").click(function(){
       alert("按钮");
    });
});

  这时点击按钮将只触发按钮的点击事件

另一种解决办法:

$("#div1").click(function (event) {
            alert("DIV1");
        });
        $("#div2").click(function () {
            alert("DIV2");
        });

        $(":button").click(function (event) {

            alert("按钮");
            event.stopPropagation();
        });

  该方法可以完全阻止事件冒泡。与.target类似,这个方法也是一种纯JavaScript特性,但在跨浏览器的环境中则无法安全地使用 。不过,只要我们通过jQuery来注册所有的事件处理程序

时间: 2024-08-10 16:59:40

JS事件冒泡解决办法的相关文章

js事件冒泡

javaSciprt事件中有两个很重要的特性:事件冒泡以及目标元素. 事件冒泡: 当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发.这一过程被称为事件冒泡:这个事件从原始元素开始一直冒泡到DOM树的最上层. 目标元素: 任何一个事件的目标元素都是最开始的那个元素,在我们的这个例子中也就是label.使用事件代理的话我们可以把事件处理器添加到一个元素上,等待一个事件从它的子级元素里冒泡上来,并且可以很方便地得知这个事件是从哪个元素开始的. 事

Xcode编译WebApps找不到js的错误解决办法&lt;转&gt;

使用Xcode做WebApps时,使用UIWebview来调用一个页面,有时会遇到问题,其一就是编译的时候出现黄色感叹号的Warning,js文件都报错:warning: no rule to process file '$(PROJECT_DIR)/jquery-1.8.1.min.js' of type sourcecode.javascript for architecture i386 错误原因是:js和html等资源文件加入到project的时候,Xcode错误的将js文件都放到了编译

eclipse中加放js文件报js语法错误解决办法

1) eclipse设置         window->preference-> JavaScript -> Validator->Errors/Warnings->Enable Javascript Sematic validation前面的钩号去掉 2) .project文件    下面的代码删除 <buildCommand> <name>org.eclipse.wst.jsdt.core.javascriptValidator</name

FileSystemWatcher触发多次Change事件的解决办法

(转) 最近要用到FileSystemWatcher来监控某个目录中的文件是否发生改变,如果改变就执行相应的操作(具体操作如:打开文档,添加一行,保存).但在开发过程中,发现FileSystemWatcher在文件创建或修改后,会触发多个Created或Changed事件,具体原因就是处理文件的过程中执行了多次文件系统操作,触发了多次事件.具体可以参看微软的关于FileSystemWatcher这方面的解释:Troubleshooting FileSystemWatcher Components

双击事件失效解决办法

某些时候,双击事件会失效,模拟办法解决双击失效后,而同时我又不想在该元素上触发两次单击事件,解决办法如下: var dbclickTime={ prev:0, next:0//模拟触发双击};var clickConflict={//解决单击事件和双击事件的冲突 _timeout:null, set:function (fn) { this.clear(); this._timeout=window.setTimeout(fn,400); }, clear:function () { if(th

js事件冒泡和捕捉

(1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div -> body -> html -> document Mozilla 1.0: div -> body -> html -> document -> window (2)捕获型事件(event capturing):事件从最不精确的对象(document 对象)开

什么是JS事件冒泡?

什么是JS事件冒泡?: 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window).   如何来阻止Jquery事件冒泡? 通过一个小例子来解释 <%@ Page Language="C#" A

阻止JS事件冒泡传递(cancelBubble 、stopPropagation)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Test.WebForm1" %> <!DOCTYPE html><html><head><title> 阻止JS事件冒泡传递(cancelBubble .stopPropagation)</

这可能是最简明扼要的 js事件冒泡机制+阻止默认事件 讲解了

哎 js事件冒泡机制和阻止冒泡 阻止默认行为好像永远也整不清楚,记了忘 忘了记...醉了 这篇文章写完以后下次再忘记 就呼自己一巴掌,忘一次一巴掌 首先要明白两个概念--事件和事件流 事件指的是用户或浏览器自身执行的某种动作,又称为原始事件模型,例如onclick等 事件流指的是 从页面中接收事件的顺序,也就是说当一个事件产生时,这个事件的传播过程就叫做事件流. 事件冒泡: 从事件目标开始 一级级向上冒泡,到document为止--从里到外 IE 5:div--body--document; I