jQuery基础-属性和样式篇

1、从DOM到jQuery操作特性/属性

我们知道每个元素都有一个或者多个特性,如:在img元素中,src就是元素的特性,用来标记图片的地址。在原生的DOM中操作特性的方法主要有3个:getAttribute()、setAttribute()和removeAttribute()。注:《js高级程序设计》书中将Attribute翻译为“特性”。

|-- getAttribute
getAttribute是一个函数,只有一个参数——获取的特性名element.getAttribute(attrName),这里我们需要注意的是getAttribute方法不属于document对象,所以不可以使用document对象调用,它是通过元素节点对象调用的。

|-- setAttribute
setAttribute一般用于对特性节点的值作出修改,同getAttribute一样, setAttribute也只作用于元素节点:element. setAttribute(attrName,value)

|-- removeAttribute
顾名思义,移除元素节点的某个特性
element.removeAttribute(attrName)

  • 在jQuery中使用一个attr()与removeAttr()就可以全部搞定了,包括兼容问题
    attr()有4个表达式:
    attr(attrName):获取属性的值
    attr(attrName, value):设置属性的值
    attr(attrName,fn):设置属性的函数值
    attr(attriNames):给指定元素设置多个属性值,即:{属性名一: “属性值一” , 属性名二: “属性值二” , … … }

removeAttr()
element.removeAttr( attributeName ): 为匹配的元素集合中的每个元素中移除一个属性(attribute)

下面写了一个小demo的源码在github上,可以帮助理解和参考
源码
查看效果

2、jQuery的属性与样式之html()、text()和val()

  • html()方法
    同JavaScript中的innerHtml属性类似,用来读取或设置某个元素中的HTML内容,下面做一下实例,看下原生的innerHtml和jquery中的html()各自使用

HTML

Content1

Content2

JS的innerHtml属性

const d =document.querySelector('#d')
console.log(d.innerHTML)    //   

Content1

Content2

jQuery的html()方法

const $d = $('#d')
console.log($d.html())
  • text()方法
    在原生JS里面innerText是一个可写属性,返回元素内包含的文本内容,在多层次的时候会按照元素由浅到深的顺序拼接其内容;jquery中text()方法结果返回一个字符串,包含所有匹配元素的合并内容

HTML

  

123456

JS的innerText属性

   const div = document.querySelector('div')
    console.log(div.innerText)       //123456,按照元素由浅到深的顺序拼接其内容

jQuery的text()方法

const $div = $('div')
console.log($div.text())

下面可以参考写的一个复杂点的demo,将以上两种方法一起使用:

-HTML

    

html()与text()

显示通过html方法获取到的内容

显示通过text方法获取到的内容

jQuery的html()、text()

        //显示出html方法获取到的内容,html()是整个html文档结构
        const contentHtml = $(".first-div").html()
        $('p:first').text(contentHtml)

        //显示出text方法获取到的内容,text()是文本内容的合集
        const contentText = $(".first-div").text()
        $('p:last').text(contentText)

        //通过html()方法来替换html结构
        $('.left div:first').html('整个文档被替换了')

        //通过.text()方法替换文本内容
        $(".left a:first").text('替换第一个a元素的内容')

查看源码

  • val()方法
    jQuery中有一个val()方法主要是用于处理表单元素的值,比如 input、select 和 textarea等

例子:一个input登陆输入框的例子
HTML

  

jQuery中val()方法

//对输入邮箱地址框进行操作
$('#address').focus(function(){
      var textValue = $(this).val()    //获取id为address的input元素的值
      if(textValue=="请输入邮箱地址") {
        $(this).val("")             //满足条件时(获取焦点),清空输入框
      }
    })

    $('#address').blur(function(){
      var textValue = $(this).val()    //获取id为address的input元素的值
      if(textValue=="") {
        $(this).val("请输入邮箱地址")             //满足条件时(失去焦点),重新为input输入框填入新的占位值
      }
    })

foucs()方法相当于JavaScript中的onfocus()方法,作用是处理获得焦点的事件;blur()方法相当于JavaScript中的onblur()方法,作用是处理获得焦点的事件。

查看源码
查看效果

上面的例子中我们发现val()方法可以获取元素的值,同时也可以设置元素的值。另外,val()方法在表单的操作中还可以使select(下拉列匡表)、checkout(多选框)、radio(单选框)相应的选项被选中,下面用一个例子来展示val()方法的选中
HTML

多选1 多选2 多选3 多选4
单选1 单选2 单选3

jQuery中val()方法

    $('#test1').val("option2")     //选中option中的2号

    $(':checkbox').val(["check2","check3"])   //多选按钮选中2和3
    $(':radio').val(["radio2"])            //单选按钮选中2

3、jQuery的属性与样式之addClass()、removeClass()和toggleClass()

  • 增加样式:addClass(className)
    在p元素增加一个newClass的样式:

$('p').addClass("newClass")

  • 删除样式:removeClass(className)

$('p').removeClass("class1") //删除p元素上的class1

  • 切换样式:toggleClass()
    下面看一个表格奇数行、偶数行颜色不同的例子



  
  
  
  toggleClass
  
  


  
wuqi www
wuqi www
wuqi www
wuqi www
wuqi www

4、jQuery的属性与样式之css()与addClass()设置样式的区别

我们知道对于样式的设置,我们可以通过css()方法来直接改变;也可以通过addClass()来先为选择的元素添加一个class属性,再在css中设置对应class的样式

  • 可维护性:

.addClass()的本质是通过定义个class类的样式规则,给元素添加一个或多个类。css方法是通过JavaScript大量代码进行改变元素的样式

通过.addClass()我们可以批量的给相同的元素设置统一规则,变动起来比较方便,可以统一修改删除。如果通过.css()方法就需要指定每一个元素是一一的修改,日后维护也要一一的修改,比较麻烦

  • 灵活性:

通过.css()方式可以很容易动态的去改变一个样式的属性,不需要在去繁琐的定义个class类的规则。一般来说在不确定开始布局规则,通过动态生成的HTML代码结构中,都是通过.css()方法处理的

  • 样式值:

.addClass()本质只是针对class的类的增加删除,不能获取到指定样式的属性的值,.css()可以获取到指定的样式值。

你可能感兴趣的:(jQuery基础-属性和样式篇)