美文网首页前端开发
【基础-3】JQuery基础笔记

【基础-3】JQuery基础笔记

作者: Yrme | 来源:发表于2019-02-22 10:54 被阅读85次

    笔记来源教程:廖雪峰个人网站

    一、简介

    ==============================================================
    1、Javascript世界中使用最广泛的一个库,理念是“Write Less,Do More”

    2、优点
    消除浏览器差异
    简洁的操作DOM的方法
    轻松实现动画、修改CSS等各种操作

    3、版本:目前最新3...,如需兼容IE6~8使用1...版本

    4、使用jQuery:在页面head引入即可

    5、$符号:把所有功能封装在一个全局变量jQuery中,$是一个合法的变量名,是变量jquery的别名

     如果`$`变量被占用,采用jquery在占用`$`之前先在内部保存原来的$
    $; // jQuery(selector, context)
    jQuery.noConflict();
    $; // undefined
    jQuery; // jQuery(selector, context)
    

    二、选择呢器

    ==============================================================

    1、是jQuery的核心,一个选择器写出来类似$('#dom-id')

    1.按ID查找:$('#domId'),不存在会返回[]对象,不会返回undefined或者null
    2.按tag查找:$('p')
    3.按class查找:$('.dom')、$('.dom.dom2')
    4.按属性查找:$('[name=email]');
    5.组合查找:$('input[name=email]');
    6.多项选择器:$('p,div');

    2、层次选择器

    1.层次选择器:层级用空格隔开,$('ul.lang li')
    2.子选择器:层级关系必须是父子关系,$('ul.lang > li')
    3.过滤器:附加在选择器上精准定位元素,$('ul.lang li:first-child')
    4.表单相关

    :input  可以选择input、textarea、select、button
    :file   可以选择 input type="file",同input[type=file]
    :checkbox   可以选择复选框,同input[type=checkbox]
    :radio   可以选择复选框,同input[type=radio]
    :focus   获取当前输入焦点元素,$('input:focus')
    :checked   选择被选中的单选框和复选框,$('input[type=radio]:checked')
    :enabled   选择正常输入的input、select
    :disabled   和:enabled相反,选择不能输入的
    

    5.其他选择器
    可见元素:$('div:visible')
    隐藏元素:$(div:hidden)

    3、查找和过滤

    1.find():在某个节点的所有子节点中查找,接收任意的选择器
    $('ul.lang').find('.dy')

    2.parent():从当前节点开始向上查找
    $('#swift').parent()

    3.next()、prev():同一层级节点

    4.过滤

    filter():滤掉不符合选择器条件的节点
    $('ul.lang li').filter('.dy')
    或者传入一个参数,注意函数内部this被绑定为dom对象

    $('ul.lang li').filter(function() {
        return this.innerHTML.indexOf('S') === 0;
    })
    

    map():把一个jQuery对象包含的若干DOM节点转化为其他对象

    var langs = $('ul.lang li');
    var arr = langs.map(function(){
        return this.innerHTML;
    }).get();
    
    

    first()、last()、slice():返回新的对象,把不需要的dom节点去掉

    三、操作DOM

    ==============================================================

    1、修改Text和HTML,无参是获取。有参是修改

    获取节点的文本:$('#test').text()
    获取原始HTML文本:$('#test').html()

    2、修改CSS

    获取CSS属性:$('#test-div').css('color');
    设置CSS属性:$('#test-div').css('color', '#336699');
    清除CSS属性:$('#test-div').css('color', '');
    class是否包含highlight:$('#test-div').hasClass('highlight');
    添加highlight这个class:$('#test-div').addClass('highlight');
    删除highlight这个class:$('#test-div').removeClass('highlight');

    3、显示和隐藏DOM

    显示:show()、隐藏:hide()

    4、获取DOM信息

    1.浏览器可视窗口大小

    $(window).width(); // 800
    $(window).height(); // 600
    

    2.HTML文档大小

    $(document).width(); // 800
    $(document).height(); // 3500
    

    3.某个div的大小

    var div = $('#test-div');
    div.width(); // 600
    div.height(); // 300
    div.width(400); // 设置CSS属性 width: 400px,是否生效要看CSS是否有效
    div.height('200px'); // 设置CSS属性 height: 200px,是否生效要看CSS是否有效
    

    5、操作dom节点的属性

    设置属性:attr()
    移除属性:removeAttr()

    prop()与attr()对属性checked处理有所不同

    var radio = $('#test-radio');
    radio.attr('checked'); // 'checked'
    radio.prop('checked'); // true
    

    prop()返回值更合理一些。不过,用is()方法判断更好,还有selected

    var radio = $('#test-radio');
    radio.is(':checked'); // true
    

    6、操作表单

    获取值:val()、设置值:value()

    7、修改DOM结构

    append():添加DOM,接受字符串和原始dom对象
    append()把DOM添加到最后,prepend()则把DOM添加到最前

    $('#test-div>ul').append('<li><span>Haskell</span></li>');
    // 创建DOM对象
    var ps = document.createElement('li');
    ps.innerHTML = '<span>Pascal</span>';
    
    // 添加DOM对象:
    ul.append(ps);
    
    // 添加jQuery对象
    ul.append($('#scheme'));
    
    // 添加函数对象
    ul.append(function (index, html) {
        return '<li><span>Language - ' + index + '</span></li>';
    });
    

    同级节点可以用after()或者before()方法
    删除节点:remove(),如果包含若干节点,可以一次性删除多个节点

    四、事件

    ==============================================================

    1、on方法用来绑定一个事件,我们需要传入事件名称和对应的处理函数

    2、鼠标事件

    click: 鼠标单击时触发;
    dblclick:鼠标双击时触发;
    mouseenter:鼠标进入时触发;
    mouseleave:鼠标移出时触发;
    mousemove:鼠标在DOM内部移动时触发;
    hover:鼠标进入和退出时触发两个函数,相当于mouseenter加上mouseleave

    3、键盘事件:键盘事件仅作用在当前焦点的DOM上,通常是<input>和<textarea>

    keydown:键盘按下时触发;
    keyup:键盘松开时触发;
    keypress:按一次键后触发

    4、其他事件

    focus:当DOM获得焦点时触发;
    blur:当DOM失去焦点时触发;
    change:当<input>、<select>或<textarea>的内容改变时触发;
    submit:当<form>提交时触发;
    ready:当页面被载入并且DOM树完成初始化后触发,仅作用于document对象
    $(function(){...})

    5、事件参数:所事件都会传入Event对象作为参数,可以从event对象上获取更多信息

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

    6、取消绑定:off('click',funcName)

    7、事件触发条件

    1.监控文本框的内容改动

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

    用JavaScript代码去改动文本框的值,将不会触发change事件
    希望用代码触发change事件,可以直接调用无参数的change()方法

    var input = $('#test-input');
    input.val('change it!');
    input.change(); // 触发change事件
    input.change()相当于input.trigger('change'),它是trigger()方法的简写
    

    8、浏览器安全限制:只有在用户触发下才能执行:window.open()

    var button1 = $('#testPopupButton1');
    var button2 = $('#testPopupButton2');
    function popupTestWindow() {
        window.open('/');
    }
    button1.click(function () {
        popupTestWindow();
    });
    button2.click(function () {
        // 不立刻执行popupTestWindow(),100毫秒后执行:
        setTimeout(popupTestWindow, 100);
    })
    

    五、动画

    ==============================================================
    以固定的时间间隔,每次把DOM元素的CSS样式修改一点,内置动画有
    1、show / hide:左上角展开,时间以ms为单位,也可以是flow和fast

    $('#div').hide(3000);
    $('#div').show(slow);
    

    2、slideUp / slideDown:垂直方向逐渐展开或收缩的
    3、fadeIn / fadeOut:淡入淡出,fadeToggle()则根据元素是否可见来决定下一步动作
    4、自定义动画:animate()

    var div = $('#test-animate');
    div.animate({
        opacity: 0.25,
        width: '256px',
        height: '256px'
    }, 3000, function () {
        console.log('动画已结束');
        // 恢复至初始状态:
        $(this).css('opacity', '1.0').css('width', '128px').css('height', '128px');
    });
    

    5、串行动画:通过delay()方法实现暂停

    var div = $('#test-animates');
    // 动画效果:slideDown - 暂停 - 放大 - 暂停 - 缩小
    div.slideDown(2000)
    .delay(1000)
    .animate({
        width: '256px',
        height: '256px'
    }, 2000)
    .delay(1000)
    .animate({
        width: '128px',
        height: '128px'
    }, 2000);
    

    六、AJAX

    ==============================================================

    1、参数

    $.ajax(url, settings)
    async:意不执行,默认true
    method:'GET'、'POST'、'PUT'
    contentType:发送POST请求的格式,
    默认值'application/x-www-form-urlencoded; charset=UTF-8'
    也可以指定为text/plain、application/json
    data:发送的数据,可以使字符串、数组或object
    headers:发送的额外的HTTP头,必须是一个object
    dataType:接收的数据格式,可以指定为'html'、'xml'、'json'、'text'等,缺省情况下根据响应的Content-Type猜测。
    

    2、get方法

    $.get('/path/to/resource', {
        name: 'Bob Lee',
        check: 1
    });
    

    3、post方法:post()和get()类似,但是传入的第二个参数默认被序列化为application/x-www-form-urlencoded

    var jqxhr = $.post('/path/to/resource', {
        name: 'Bob Lee',
        check: 1
    });
    

    4、getJSON:快速通过GET获取一个JSON对象

    var jqxhr = $.getJSON('/path/to/resource', {
        name: 'Bob Lee',
        check: 1
    }).done(function (data) {
        // data已经被解析为JSON对象了
    });
    

    5、安全限制:和Javascript写ajax的限制一样

    如果使用JSONP可以在ajax()中设置jsonp:'callback',让jquery实现JSONP跨域加载数据

    七、拓展:编写jQuery插件

    ==============================================================
    给jQuery对象绑定一个新方法付是通过拓展$.fn对象实现的

    $.fn.highlight = function (options) {
        // 合并默认值和用户设定值:
        var opts = $.extend({}, $.fn.highlight.defaults, options);
        this.css('backgroundColor', opts.backgroundColor).css('color', opts.color);
        return this;
    }
    // 设定默认值:
    $.fn.highlight.defaults = {
        color: '#d85030',
        backgroundColor: '#fff8de'
    }
    

    相关文章

      网友评论

        本文标题:【基础-3】JQuery基础笔记

        本文链接:https://www.haomeiwen.com/subject/zamsyqtx.html