zoukankan      html  css  js  c++  java
  • jQuery event,冒泡,默认事件用法

    jQuery event,冒泡,默认事件用法

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <base href="<%=basePath%>">
    <meta charset="UTF-8">
    <title>b index</title>
    <link rel='stylesheet' type="text/css" href='b/css/bootstrap.css'>
    <style type="text/css">
        .s1{
            width: 100px;
            height: 100px;
            background-color: pink;
        }
        .s2{
            width: 50px;
            height: 50px;
            background-color: green;
        }
    </style>
    </head>
    <body style="margin:1px;">
        <div id="div001">div001
            <div id="cdiv001">cdiv001
                <span id="span001">span001
                    <a href="#">link</a>
                </span>
            </div>
        </div>
        <div id='div002'>div002
            <input id="txt001" />
            <input id="txt002" />
        </div>
        <div id='div003'>div003</div>
        <div>
            <button id="btn001">click me to check e.result </button>
        </div>
        <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
        <script type="text/javascript" src="b/js/bootstrap.js"></script>
        <script type="text/javascript" src="js/index039.js"></script>
    </body>
    </html>
    $(function() {
        $('#div001').click(div001Click);
        $('#cdiv001').click(div001Click);
        $('span').click(div001Click);
        $('a').click(div001Click);
        $('#txt001').keydown(txt001Keydown);
        $('#txt002').keydown(txt001Keydown);
        $('#txt002').mousedown(txt002Mousedown);
        $('#btn001').click(btn001Click01);
        $('#btn001').click(btn001Click02);
    });
    function div001Click(e) {
        console.log('currentTarget:' + e.currentTarget.id + "--" + e.type);
        console.log('target:' + e.target.id + "--" + e.type);
        // 这样可以阻止事件冒泡;
        // e.stopPropagation();
        // 这样也可以阻止事件冒泡;
        // return false;
        // 这样可以阻止默认行为,a标签就不会自动跳转导航了;但是不会阻止事件冒泡;
        e.preventDefault();
        // 这样也可以阻止默认行为,但同时也把事件冒泡阻止了;
        // return false;
    }
    function txt001Keydown(e) {
        /**
         * 在txt002中按下了字母a,e对象jQuery.Event如下:
         * 
         * altKey: false    是否按了alt  
         * bubbles: true
         * cancelable: true
         * char: undefined
         * charCode: 0
         * ctrlKey: false    是否按了ctrl
         * currentTarget: input#txt002
         * data: null
         * delegateTarget: input#txt002
         * eventPhase: 2
         * handleObj: Object
         * isDefaultPrevented: function returnFalse() {
         * jQuery111108223536524455994: true
         * key: undefined
         * keyCode: 65        字母a就是65,不论是否按了shift键;
         * metaKey: false    是否按了meta键,大多数键盘上并不存在Meta键,该键存在于MIT计算机、Mac计算机或Sun公司的一些计算机键盘上。
         * originalEvent: KeyboardEvent
         * relatedTarget: undefined
         * result: "txt001KeydownReturn"     如果在return之前进行了debug暂停,是看不到这个值的;api说明:当前事件事件最后触发的那个处理函数的返回值,除非值是 undefined 。
         * shiftKey: false    是否按了shift
         * target: input#txt002
         * timeStamp: 1447392527314
         * type: "keydown"
         * view: Window
         * which: 65    到底按的是哪个键或按钮;
         * __proto__: Object
         * 
         */
        console.log('target:'+e.target.id+'---'+e.which);
        console.log(e);
        return 'txt001KeydownReturn';
    }
    function txt002Mousedown(e) {
        /**
         * 在txt002上点击鼠标左键/右键/中间滚轮:
         * 
         * altKey: false
         * bubbles: true
         * button: 0/2/1        0表示鼠标左键/2表示鼠标右键/1表示鼠标中间轮
         * buttons: undefined
         * cancelable: true
         * clientX: 382/384/384
         * clientY: 69/61/61
         * ctrlKey: false
         * currentTarget: input#txt002
         * data: null
         * delegateTarget: input#txt002
         * eventPhase: 2
         * fromElement: null
         * handleObj: Object
         * isDefaultPrevented: function returnFalse() {
         * jQuery1111020544881583191454: true
         * metaKey: false
         * offsetX: 125/127/127
         * offsetY: 23/15/15
         * originalEvent: MouseEvent
         * pageX: 382/384
         * pageY: 69/61
         * relatedTarget: null
         * result: "txt002MousedownReturn"    如果在return之前进行了debug暂停,是看不到这个值的;api说明:当前事件事件最后触发的那个处理函数的返回值,除非值是 undefined 。
         * screenX: 277/278
         * screenY: 221/215
         * shiftKey: false
         * target: input#txt002
         * timeStamp: 1447393382134/1447393383781/1447393386565        事件触发时距离1970年1月1日的毫秒数
         * toElement: input#txt002
         * type: "mousedown"
         * view: Window
         * which: 1/3/2        1表示鼠标左键/3表示鼠标右键/2表示鼠标中轮
         * __proto__: Object
         * 
         */
        console.log(e);
        return 'txt002MousedownReturn';
    }
    function btn001Click01(e) {
        console.log('btn001Click01');
        // 在控制台查看这个e.result竟然是btn001Click02Result;
        console.log(e);
        return 'btn001Click01Result';
    }
    function btn001Click02(e) {
        console.log('btn001Click02');
        // 在控制台查看这个e.result竟然也是btn001Click02Result;
        console.log(e);
        // 返回当前事件事件最后触发的那个处理函数的返回值;的确是btn001Click01Result
        console.log(e.result);
        return 'btn001Click02Result';
    }
  • 相关阅读:
    一个简单的knockout.js 和easyui的绑定
    knockoutjs + easyui.treegrid 可编辑的自定义绑定插件
    Knockout自定义绑定my97datepicker
    去除小数后多余的0
    Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR
    Azure ARM (1) UI初探
    Azure Redis Cache (3) 创建和使用P级别的Redis Cache
    Windows Azure HandBook (7) 基于Azure Web App的企业官网改造
    Windows Azure Storage (23) 计算Azure VHD实际使用容量
    Windows Azure Virtual Network (11) 创建VNet-to-VNet的连接
  • 原文地址:https://www.cnblogs.com/stono/p/4962467.html
Copyright © 2011-2022 走看看