jQuery学习笔记:属性操作、内容文本值、元素操作、尺寸、位置操作、事件注册与处理、对象拷贝(浅拷贝与深拷贝)、多库共存问题

文章目录

  • jQuery属性操作
    • 设置或获取元素固有属性值prop()
    • 设置或者获取自定义属性值attr()
    • 数据缓存data()
  • jQuery内容文本值
    • 普通元素内容html() (相当于原生inner HTML)
    • 普通元素文本内容text() (相当于原生inner Text)
    • 表单的val()
  • jQuery元素操作
    • 遍历元素
      • 语法一:
      • 语法二:
    • 创建元素
    • 添加元素
      • 内部添加
      • 外部添加
      • 删除元素
  • jQuery尺寸、位置操作
    • jQuery尺寸
    • jQuery位置
      • offset()设置或获取元素偏移
      • positon()获取元素偏移
      • scrollTop() / scrollLeft() 设置或获取元素被卷去的头部和左侧
  • jQuery事件
    • jQuery事件注册
      • 单个事件注册
      • 事件处理on()绑定事件
        • on()方法的优势1
        • on()方法的优势2
    • 事件处理off()解绑事件
    • 自动触发事件 trigger()
    • jQuery事件对象
  • jQuery对象拷贝
  • 多库共存
    • 问题
    • 解决方案:

jQuery属性操作

设置或获取元素固有属性值prop()

  1. 获取属性语法:

prop(‘属性’)

  1. 设置属性语法:

prop(‘属性’,‘属性值’)

设置或者获取自定义属性值attr()

  • 用户自己给元素添加的属性,我们称为自定义属性,比如给div添加index = “1”
  1. 获取属性语法:

attr(“属性”) //类似原生getAttribute()

  1. 设置属性语法:

attr(“属性”,“属性值”) //类似原生setAttribute()

数据缓存data()

  • data()方法可以在指定的元素上存取数据,并不会修改DOM元素结构,一旦页面刷新,之前存放的数据都将被移除
  1. 附加数据语法:

data(“name”,“value”) //向被选元素附加数据

  1. 获取数据语法:

data(“name”) //向被选元素获取数据
同时,还可以读取HTML5自定义属性data-index,得到的是数字型。

jQuery内容文本值

  • 主要针对元素的内容还有表单的值操作

普通元素内容html() (相当于原生inner HTML)

html() //获取元素的内容
html(“内容”) //设置元素的内容

普通元素文本内容text() (相当于原生inner Text)

text() //获取元素的文本内容
text(“文本内容”) //设置元素的文本内容

表单的val()

$(‘input’).val()

jQuery元素操作

  • 主要是遍历、创建、添加、删除元素操作

遍历元素

jQuery隐式迭代是对同一类元素做了同样的操作。如果想要给同一类做不同操作,就需要用到遍历

语法一:

$(“div”).each( function(index , domEle) { xxx; } )
注意:

  1. each()方法遍历匹配的每一个元素,主要用到DOM处理,each每一个
  2. 里面的回调函数有2个参数:index是每个元素的索引号;domEle是每个DOM元素对象,不是jQuery对象
  3. 所以要想使用jQuery方法,需要给这个dom元素转换为jQuery对象 $(domEle)
<div>1div>
<div>2div>
<div>3div>
 $(()=>{
            $('div').each((index,item)=>{
                if(index %2 ===0){
                    //index为偶数的div变为红色
                    $(item).css("color","red") 
                }else{
                    //index为奇数的div变为蓝色
                    $(item).css("color","blue")
                }
            })
        })

语法二:

$.each( object , function( index , element ) , { xxx: })

  1. $.each()方法可用于遍历任何对象,主要用于数据处理,比如数组、对象
  2. 里面的函数有2个参数:index 是每个元素的索引号;element遍历内容

创建元素

语法:
$("

  • ")

    • 动态的创建了一个

    添加元素

    内部添加

    语法:

    element.append(“内容”)
    把内容放入匹配元素内部最后面,类似原生appendChild

    element.prepend(“内容”)
    内部添加并且放到内容的最前面

    外部添加

    element.after(“内容”) //把内容放到目标元素后面
    element.before(“内容”) //把内容放入目标元素前面

    删除元素

    1. element.remove() //删除匹配的元素(本身) 自杀
    2. element.empty() //删除匹配的元素集合中所有的子节点 孩子
    3. element.html() //清空匹配的元素内容里面的子节点 孩子

    jQuery尺寸、位置操作

    jQuery尺寸

    jQuery学习笔记:属性操作、内容文本值、元素操作、尺寸、位置操作、事件注册与处理、对象拷贝(浅拷贝与深拷贝)、多库共存问题_第1张图片

    • 以上参数为空,则是获取相应值,返回的是数字型
    • 如果参数为数字,则是修改相应值
    • 参数可以不必写单位

    jQuery位置

    • 位置主要有三个:offset()、position()、scrollTop()/scrollLeft()

    offset()设置或获取元素偏移

    1. offset()方法设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系
    2. 该方法有2个属性left 和top 。offset().top 用于获取距离文档顶部的距离,offset().left用于获取距离文档左侧的距离
    3. 可以设置元素的偏移,offset({top: 10,left:30});

    positon()获取元素偏移

    1. positon() 方法用于返回被选元素相对于带有定位的父级 偏移坐标,如果父级都没有定位,则以文档为准。
      注意:这个方法只能获取不能设置偏移

    scrollTop() / scrollLeft() 设置或获取元素被卷去的头部和左侧

    1. scrollTop()方法设置或返回被选元素被卷去的头部
    2. scrollLeft()方法设置或返回被选元素被卷去的左部,如果元素的内容没有超出其视口宽度,则scrollLeft的值通常为 0.

    jQuery事件

    jQuery事件注册

    单个事件注册

    element.事件(function(){})
    $(“div”).click(function(){事件处理程序})
    其他事件和原生基本一致

    事件处理on()绑定事件

    • on()方法在匹配元素上绑定一个或者多个事件的事件处理函数

    element.on(events , [selector] , fn)

    1. events:一个或者多个用空格分隔的事件类型,如"click"或者"keydown"
    2. selector:元素的子元素选择器
    3. fn:回调函数 即绑定在元素身上的侦听函数
    on()方法的优势1
    • 可以事件委派操作。事件委派的定义就是,把原来加给子元素身上的事件绑定到父元素身上,就是把事件委派给父元素
     $("ul").on("click","li",function(){
                alert(11)
            })
    
    on()方法的优势2
    • 可以给未来动态创建的元素绑定事件
          $("ol").on("click","li",()=>{
                alert(11);
            })
            // $('ol li').click(function(){
            //     alert(11)
            // })
            var li = $("
  • 我是后来创建的
  • "
    ) $("ol").append(li);

    事件处理off()解绑事件

    • off()方法可以移除通过on()方法添加的事件处理程序
             //事件解绑off
            $('div').off() //解除div身上的所有事件
            $('div').off('click') //解除div身上的点击事件
            $("ul").off("click","li") //解绑事件委托
    

    如果有的事件只想触发一次,可以使用one()来绑定事件

    自动触发事件 trigger()

    • 有些事件希望自动触发,比如轮播图自动播放功能跟点击右侧按钮一致。可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发

    element.click() //第一种简写形式

    element.trigger(“type”) //第二种自动触发模式

    $('p').on("click", function(){
    alert("hi~");
    })
      $("p").trigger("click");   //此时自动触发点击事件,不需要鼠标点击
    

    element.triggerHandler(type) //第三种自动触发模式

    jQuery事件对象

    • 事件被触发,就会有事件对象的产生

    element.on(events, [selector], function(event) {} )

    1. 阻止默认行为:event.preventDefault() 或者 return false
    2. 阻止冒泡:event.stopPropagation()
    $(()=>{
                $(document).on("click",()=>{
                    console.log('点击了document');
                })
                
                $('div').on("click",(event)=>{
                    console.log('点击了div');
                    event.stopPropagation()//阻止冒泡
                })
            })
    

    jQuery对象拷贝

    • 如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以使用$.extend()方法
      语法:

    $.extend([deep] , target , object1 , [objectN])

    1. deep:如果设为true为深拷贝 ,默认为false:浅拷贝
    2. target:要拷贝的目标对象
    3. object1:待拷贝到第一个对象的对象
    4. objectN:待拷贝到第N个对象的对象
    5. 浅拷贝 是把被拷贝的对象复杂数据类型中的地址 拷贝给目标对象,修改目标对象会影响 被拷贝对象。
    6. 深拷贝 ,前面加true,完全克隆(拷贝的是对象,而不是地址),修改目标对象不会影响 被拷贝对象,如果里面有不冲突的属性则会合并 到一起。

    多库共存

    问题

    • jQuery使用$作为标示符,随着jQuery的流行,其他js库也会用这$作为标示符,这样一起使用会引发冲突

    解决方案:

    1. 把里面的符号$统一改为jQuery。比如jQuery(“div”)
    2. jQuery变量规定新的名称:$.noConflict()
    var xxxx = $.noConflict();
    //jQuery释放对$的控制权,让用户自己选择"xxxx"
    

    你可能感兴趣的:(jquery,学习,笔记,前端)