Dom0级事件

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type ="text/css">
        div {
         border:1px solid #0094ff;
         width:50%;
         padding:50px;
        }
    </style>
    <script src="Scripts/jquery-1.8.2.min.js"></script>
    <script type ="text/javascript">
        $(function () {
            //1 DOM 0级事件特点
            //1.1相同domu、元素的相同属性 只能注册一个方法,如果注册多个,则会被后面的覆盖
            // 本质原因:onclick等0级事件,本质就是dom对象的一个属性(方法类型)如果多次赋值,则会覆盖前面的
            document.getElementById("btnO").onclick = function () {
                alert("我是0级事件");
            };
            document.getElementById("btnO").onclick = function () {
                alert("111111111111");
            };
            //1.2 使用的是事件冒泡:由内往外
            document.getElementById("divFather").onclick = function () {
                alert("divFather");
            };
            document.getElementById("divSon").onclick = function () {
                alert("divSon");
            };

            //2 dom2级事件特点:
            //2.1 注册的方式使用不一样
            //2.2 注册事件方法时 可以选择 捕获阶段事件(true),也可以选择冒泡阶段事件(false) 老式IE浏览器要加onclick
            document.getElementById("btn2").attachEvent("onclick", test2);

            document.getElementById("btn2").detachEvent(test2);//老式IE浏览器的移除方法IE7及IE7以下


            document.getElementById("btn2").addEventListener("click", function () { alert("btn2"); }, true);
            document.getElementById("div1").addEventListener("click", function () { alert("div1"); }, true);
            document.getElementById("div2").addEventListener("click", function () { alert("div2"); }, true);

            //2.3     2 级dom事件相同元素的相同事件 可以注册多个方法,而且可以动态移除指定方法
            document.getElementById("btn2").addEventListener("click", test2, false);//如果要移除方法,注册方法必须要以这种方式
            //移除方法
            document.getElementById("btn2").removeEventListener("click",test2);
        });
        //JQ所有方法都是使用二级事件
        function test2()
        {

        }
    </script>
</head>
<body>
    0级事件 会将 方法直接设置给dom对象对应的事件属性(如 :onclick)
    <div id="divFather" >
        <div id="divSon">
             <input type ="button"  value ="Dom0级事件" id ="btnO"/>
        </div>
    </div>

    2级事件 不会将方法设置给dom对象的事件属性,而是使用了另外一套机制来保存事件方法
    <div id="div1" >
        <div id="div2">
             <input type ="button"  value ="Dom0级事件" id ="btn2"/>
        </div>
    </div>
   
</body>
</html>

  

posted @ 2014-06-13 23:48  编程猴子  阅读(635)  评论(0编辑  收藏  举报