当前位置 博文首页 > 文章内容

    jQuery(三)

    作者: 栏目:未分类 时间:2020-11-13 9:01:07

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    jQuery(三)

    1. jQuery特殊属性操作

    1.1 val方法

    val方法用于设置和获取表单元素的值,例如input、textarea的值

    //获取值
    //用于有value的元素, input, select, textarea
    //没有参数就是赋值, 有参数就是取值
    $('#name').val();
    
    //设置值 
    $('#name').val('value');
    
    

    1.2 html方法与text方法

    html方法相当于innerHTML text方法相当于innerText

    //设置内容
    $('div').html('<span>这是一段内容</span>');
    //获取内容
    $('div').html()
    
    //设置内容
    $('div').text('<span>这是一段内容</span>');
    //获取内容
    $('div').text()
    

    区别:html方法会识别html标签,text方法会将内容直接当成字符串,并不会识别html标签。

    empty() 和 html() 方法都可以清空内容,但推荐使用empty方法清空元素里的内容
    
    $('div').empty();//清空div的所有内容(推荐使用,会清除子元素上绑定的事件)
    $('div').html('');//使用html方法来清空元素,不推荐使用,会造成内存泄漏,绑定的事件不会被清除。
    

    1.3 width方法与height方法

    设置或者获取高度

    //带参数表示设置高度
    $('img').height(200);
    //不带参数获取高度
    $('img').height();
    

    获取网页的可视区宽高

    //获取可视区宽度
    $(window).width();
    //获取可视区高度
    $(window).height();
    

    width是指样式中的width, 不包括border, padding, margin

    innerWidth()	//width + border
    outerWidth()	//width + border + padding
    outerWidth(true)	//width + border  + paddiing + margin
    

    场景: 用outerWidth(true)拿到单个元素的宽度, 用遍历加到总宽度

    image-20201112112258272

    1.4 scrollTop与scrollLeft

    设置或者获取垂直滚动条的位置

    //获取页面被卷曲的高度
    $(window).scrollTop();
    //获取页面被卷曲的宽度
    $(window).scrollLeft();
    

    出错记录:

    //$(window).animate()错误
    // animate:是元素动画,只能对dom!!元素!!添加动画
    //animate() 方法执行 CSS 属性集的自定义动画, window没有css属性
    $('html, body').animate({'scrollTop': 0}, 1000)
    
    //$('window').scrool() 错误, 不用单引号, window就是dom对象
    $(window).scrool()
    

    1.5 offset方法与position方法

    offset方法获取元素距离document的位置,position方法获取的是元素距离有定位的父元素的位置。

    //获取元素距离document的位置,返回值为对象:{left:100, top:100}
    $(selector).offset();
    //获取相对于其最近的有定位的父元素的位置。
    $(selector).position();
    

    2. jQuery事件机制

    JavaScript中已经学习过了事件,但是jQuery对JavaScript事件进行了封装,增加并扩展了事件处理机制。jQuery不仅提供了更加优雅的事件处理语法,而且极大的增强了事件的处理能力。

    2.1 jQuery事件发展历程(了解)

    简单事件绑定>>bind事件绑定>>delegate事件绑定>>on事件绑定(推荐)

    简单事件注册s

    click(handler)			单击事件
    mouseenter(handler)		鼠标进入事件
    mouseleave(handler)		鼠标离开事件
    

    缺点:不能同时注册多个事件, 也不能实现委托事件

    bind方式注册事件

    //第一个参数:事件类型
    //第二个参数:事件处理程序
    $('p').bind('click mouseenter', function(){
        //事件响应方法
    });
    

    缺点:不支持动态事件绑定, 也不能实现委托事件

    delegate注册委托事件

    // 第一个参数:selector,要绑定事件的元素
    // 第二个参数:事件类型
    // 第三个参数:事件处理函数
    $('.parentBox').delegate('p', 'click', function(){
        //为 .parentBox下面的所有的p标签绑定事件
    });
    

    缺点:只能注册委托事件,因此注册事件需要记得方法太多了

    on注册事件

    2.2 on注册事件(重点)

    jQuery1.7之后,jQuery用on统一了所有事件的处理方法。

    最现代的方式,强烈建议使用。

    on注册事件的语法:

    $(selector).on(events[,selector][,data],handler);
    // 第一个参数:events,绑定事件的名称可以是由空格分隔的多个事件(标准事件或者自定义事件)
    // 第二个参数:selector, 执行事件的后代元素(可选),如果没有后代元素,那么事件将有自己执行。
    // 第三个参数:data,传递给处理函数的数据,事件触发的时候通过event.data来使用(不常使用) 不常用
    // 第四个参数:handler,事件处理函数
    

    on注册简单事件

    // 表示给$(selector)绑定事件,并且由自己触发,不支持动态绑定。
    $(selector).on( 'click', function() {});
    

    on注册委托事件

    // 表示给$(selector)绑定代理事件,当必须是它的内部元素span才能触发这个事件,支持动态绑定
    $(selector).on( 'click','span', function() {});
    

    错误笔记:

    $('.slider').on('mouseleave', function () {})
    //mouseover, mouseout子元素会有事件冒泡
    //必须用mouseenter, mouseleave
    

    2.3 事件解绑

    unbind方式(不用)

    $(selector).unbind(); //解绑所有的事件
    $(selector).unbind('click'); //解绑指定的事件
    

    undelegate方式(不用)

    $( selector ).undelegate(); //解绑所有的delegate事件
    $( selector).undelegate( 'click' ); //解绑所有的click事件
    

    off方式(推荐)

    // 解绑匹配元素的所有事件
    $(selector).off();
    // 解绑匹配元素的所有click事件, 当初谁绑定的, 现在谁解绑
    $(selector).off('click');
    

    2.4 触发事件(重点)

    $(selector).trigger(event,eventObj,param1,param2,...)
    
    参数 描述
    event 必需。规定指定元素上要触发的事件。 可以是自定义事件,或者任何标准事件。
    param1,param2,... 可选。传递到事件处理程序的额外参数。 额外的参数对自定义事件特别有用。
    $(selector).click(); //触发 click事件
    $(selector).trigger('click');  //jQuery给的更直观的写法
    //用处: 事件可能有多种触发途径, 触发的函数部分复用, 没必要再写一遍
    

    trigger: 触发

    易错点笔记:

    $(".mp3 audio").get(idx).load()
    $(".mp3 audio").get(idx).play()
    //play() 是H5 提供的方法,jq没有进行封装(是DOM对象才能调用的方法)
    // 如果只是play方法那么只能等到这一首播放完毕之后才会播放下一首
    // load可以重新 加载 资源 
    
    //不松开键盘按键, 会一直触发keydown, 必须设置一个全局变量比如flag来记录按键状态, 按下flag = flase, 检测到false, 就不进入里面函数
    

    2.5 jQuery事件对象

    jQuery事件对象其实就是js事件对象的一个封装,处理了兼容性。

    //screenX和screenY	对应屏幕最左上角的值
    //clientX和clientY	距离页面左上角的位置(忽视滚动条)
    //pageX和pageY	距离页面最顶部的左上角的位置(会计算滚动条的距离)
    
    //event.keyCode	按下的键盘代码
    //event.data	存储绑定事件时传递的附加数据
    
    //event.stopPropagation()	阻止事件冒泡行为
    //event.preventDefault()	阻止浏览器默认行为
    //return false 既能阻止事件冒泡,又能阻止浏览器默认行为。
    
    $(document).on('keydown', function(e){
    	console.log(e.keycode)	//获取按键的asci码
    })