zoukankan      html  css  js  c++  java
  • JavaScript

    jQuery统一了不同浏览器之间的DOM操作的差异

    1. jQuery === $ // true

    1.1 $(x) //将x转换为jQuery对象,便于调用jQuery提供的API
    1.2 方便操作DOM,支持链式写法,消除各浏览器差异性,一套代码即可

    2. $(function () {...})的形式,是document对象的ready事件处理函数。

    由于该事件在DOM初始化后发生,因此把所有其他的 jQuery 事件和函数置于该事件中是非常好的做法。
    演变如下: 2.1 - 2.3 越来越简化

    2.1

            $(document).on('ready', function () {
                $('#testForm).on('submit', function () {
                    alert('submit!');
                });
            });
    

    2.2

    $(document).ready(function () {
        // on('submit', function)也可以简化:
        $('#testForm).submit(function () {
            alert('submit!');
        });
    });
    

    2.3

    $(function () {
        // init...
    });
    
    

    3. 事件参数

    3.1 有些事件,如mousemove和keypress,我们需要获取鼠标位置和按键的值,否则监听这些事件就没什么意义了。所有事件都会传入Event对象作为参数,可以从Event对象上获取到更多的信息
    3.2 https://github.com/janetat/Front-end-toys/tree/master/4. Coordinate-when-mouse-moves

    $(function () {
        $('#testMouseMoveDiv').mousemove(function (e) {
            $('#testMouseMoveSpan').text('pageX = ' + e.pageX + ', pageY = ' + e.pageY);
        });
    });
    

    4. 取消事件绑定

    4.1 off('click')一次性移除已绑定的click事件的所有处理函数。
    4.2 无参数调用off()一次性移除已绑定的所有类型的事件处理函数。

    function hello() {
        alert('hello!');
    }
    
    a.click(hello); // 绑定事件
    
    // 10秒钟后解除绑定:
    setTimeout(function () {
        a.off('click', hello);
    }, 10000);
    
    

    以下的代码无法达到预期,两个匿名function是两个不同的对象

    // 绑定事件:
    a.click(function () {
        alert('hello!');
    });
    
    // 解除绑定:
    a.off('click', function () {
        alert('hello!');
    });
    

    5. 事件触发条件

    5.1 事件的触发总是由用户操作引发的。例如,我们监控文本框的内容改动,当用户在文本框中输入时,就会触发change事件

    var input = $('#test-input');
    input.change(function () {
        console.log('changed...');
    });
    

    5.2 果用JavaScript代码去改动文本框的值,将不会触发change事件:

    var input = $('#test-input');
    input.val('change it!'); // 无法触发change事件
    

    5.3 有些时候,我们希望用手动触发change事件,可以直接调用无参数的change()方法来触发该事件:

    input.change()相当于input.trigger('change'),它是trigger()方法的简写。

    var input = $('#test-input');
    input.val('change it!');
    input.change(); // 触发change事件
    

    5.4 由于浏览器的限制,有些敏感的代码只能手动触发

    // 无法弹出新窗口,将被浏览器屏蔽:
    $(function () {
        window.open('/');
    });
    
    var button1 = $('#testPopupButton1');
    var button2 = $('#testPopupButton2');
    
    function popupTestWindow() {
        window.open('/');
    }
    
    button1.click(function () {
        popupTestWindow();
    });
    
    button2.click(function () {
        // 不立刻执行popupTestWindow(),100毫秒后执行:
        setTimeout(popupTestWindow, 100);
    });
    
  • 相关阅读:
    spring+hibernate常见异常集合
    Java报错原因汇总
    java常见异常集锦
    连接池 druid(阿里巴巴的框架)
    企业支付宝账号开发接口实现
    Maven使用常见问题整理
    MySQL的分页
    Struts2中通配符的使用
    Centos下安装mysql 总结
    将linux用在开发环境中
  • 原文地址:https://www.cnblogs.com/allen2333/p/8989016.html
Copyright © 2011-2022 走看看