jQuery(三)

49 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

jQuery 操作文本内容

        操作元素内的文本和超文本

        注意: 属于 jQuery 的方法 只能 jquery 元素集合调用, 原生 DOM 不能调用

 1. html()

        使用方法:

          1. 元素集合.html()

            获取该元素的超文本内容, 以字符串的形式返回

          获取的时候为了保证 html 结构只能获取第一个的元素的超文本内容

         2. 元素集合.html('内容')

            设置元素集合内元素的超文本内容

            完全覆盖式的写入

            隐式迭代: 元素集合内有多少元素, 就写入多少元素

 //1. html()
 // 获取  
 console.log($('div').html())
 // 设置  
 $('div').html('<span>我是新来的</span>')

2. text()

        使用方法:

          1. 元素集合.text()

            获取该元素的文本内容, 以字符串的形式返回

            因为是文本内容, 不涉及 html 结构, 所以拿到的是所有元素的文本内容

            以字符串的形式返回

          2. 元素集合.text('内容')

            设置元素集合内元素的文本内容

            完全覆盖式的写入

            隐式迭代: 元素集合内有多少元素, 就写入多少元素

// 2. text()
// 获取   
console.log($('div').text())
// 设置  
$('div').text('<span>我是新来的 span 标签</span>')

3. val()

        使用方法:

          1. 元素集合.val()

            获取元素集合内元素的 value 值

         2. 元素集合.val('内容')

            设置元素集合内元素的 value 值

            完全覆盖式的写入

            隐式迭代: 元素集合内有多少元素, 就写入多少元素

// 3. val()
// 获取 
console.log($('input').val())
// 设置  
$('input').val('hello world')

 jQuery 操作元素类名

1. addClass()

        添加元素类名

$('div').addClass('box')\

      2. removeClass()

        删除元素类名

$('div').removeClass('box')\

      3. hasClass()

        判断有没有类名

console.log($('div').hasClass('box'))\

      4. toggleClass()

        切换类名

        如果原先有, 就是删除

        如果原先没有, 就是添加

$('div').toggleClass('box')\

jQuery 操作元素样式

css()

       1-1. 语法: 元素集合.css('width')

          获取元素的某一个样式的值, 不管是行内还是非行内都能获取到

  console.log($('div').css('width'))\

    console.log($('div').css('height'))\

    console.log($('div').css('font-size'))\

       1-2. 语法: 元素集合.css('样式名', '样式值')

          设置元素的行内样式

          隐式迭代: 元素集合内有多少元素设置多少元素

          设置的时候, 单位是 px 可以不写

$('div').css('margin', 50).css('opacity', 0.5)\

       1-3. 语法: 元素集合.css({ 样式名 1: 样式值 1, 样式名 2: 样式值 2, ... })

          批量给元素设置行内样式

          隐式迭代: 元素集合内有多少元素设置多少元素

          设置的时候, 如果你需要设置的单位是 px 可以不写

$('div').css({   margin: 50,    width: 700 })

jQuery 基础绑定事件

1. on()

        使用方法: 元素集合.on(事件类型, 事件处理函数)

      隐式迭代: 元素集合内有多少元素, 就会给多少元素绑定事件

1. on()  
$('li').on('mouseover',
function () {     
console.log('我被点击了')  
})

jQuery 书写选项卡

  1. 给所有的 ul 里面的 li 绑定事件

      2. 自己有类名, 所有兄弟没有类名

      3. 所有的元素没有类名, 指定索引

 $('ul > li').on('click', function () {  
 // DOM元素如果象用 jquery 的方式, 使用 $() 包起来      
 $(this).addClass('active').siblings().removeClass('active')    
 // 索引 
 $(this).index()     
 $('ol > li').removeClass('active').eq($(this).index()).addClass('active')    
 })

jQuery 的事件绑定

 1. on()

        事件绑定, 根据传递不同的参数做不同的事情

        1-1. on(事件类型, 事件处理函数)

          直接绑定事件, 有隐式迭代

//1-1. on(事件类型, 处理函数)    
$('ul > li').on('click', function () { 
console.log(this)   
})

     

1-2. 元素结合.on(事件类型, 选择器, 事件处理函数)

          事件委托的绑定

          把选择器元素委托给元素集合里面的元素

      注意: 选择器元素要是 元素集合 内元素的后代元素

// 1-2. on(事件类型, 选择器, 处理函数)
// 给 li 做了一个事件委托, 委托给 ul 来做   
$('ul').on('click', 'li', function () {   
console.log('我执行了')
// this 就是你点击的那一个元素    
console.log(this)   
})document.querySelector('ul').onclick = function (e) { 
if (e.target.nodeName === 'LI') { 
console.log('我执行了')       
console.log(this)     
} }

       1-3. 元素集合.on(事件类型, 复杂数据类型, 事件处理函数)

          给元素集合内的所有元素绑定事件

          这个复杂数据类型是事件触发的时候, 传递给事件里面的参数

          在事件对象里面有一个叫做 data 的成员, 就是你传递进来的参数

// 1-3. on(事件类型, 复杂数据类型, 事件处理函数)  
$('li').on('click', { name: 'Jack' }, function (e) { 
console.log('我执行了')      
console.log(e)    
})

        1-4. 元素集合.on(事件类型, 选择器, 数据, 事件处理函数)

          事件委托的形式, 带上传递参数

          把选择器所属的事件, 委托给了元素集合内的事件

          数据位置, 就是在事件触发的时候传递给事件处理函数的参数

// 1-4. on(事件类型, 选择器, 数据, 事件处理函数) 
$('ul').on('click', 'li', 'hello world', function (e) {
console.log('我执行了')      
console.log(e)    
})

        1-5. 元素集合.on({ 事件类型 1: 事件处理函数, 事件类型 2: 事件处理函数, ... })

          一次性给元素绑定多种事件

          没法传递参数和事件委托了

// 1-5. on({ 多个事件 }) 
$('li').on({     
click: function () { 
console.log('点击事件')
},      
mouseover: function () {
console.log('移入事件') }  
})

2. one()

        用来绑定事件的方法

        和 on() 方法的参数和使用形式一模一样

      只不过绑定的事件只能执行一次

// 2. one()   
$('li').one('click', function () {
console.log('我被点击了') 
})
 $('ul').one('click', 'li', function () { 
 console.log('我被点击了')  
 })    
 $('li').one('click', { name: 'Jack' },
 function (e) {       console.log(e)   
 })      
 $('ul').one('click', 'li', 'hello world', function (e) {
 console.log(e.data)    
 }) 
 // $('li').one({
 click: function () { 
 console.log('点击事件') 
 },      
 mouseover: function () { 
 console.log('移入事件') }   
 })

3. off()

        用来解除事件绑定的

        使用方法:

          1. 元素集合.off(事件类型)

            解除元素身上该事件类型的所有事件处理函数

         2. 元素集合.off(事件类型, 事件处理函数)

            解除元素身上该事件类型的某一个事件处理函数

// 3-1. off(事件类型)
// 把 click 事件的所有事件处理函数全部解除    
$('li').off('click')
// 3-2. off(事件类型, 事件处理函数)  把 click 事件的 handlerA 事件处理函数解除   
$('li').off('click', handlerA)

4. trigger()

        用 JS 代码的方式来触发事件

        使用方法: 元素集合.trigger(事件类型)

$('li:first').trigger('click')\

jQuery 的事件函数

jQuery 给我们提供了一些简洁的绑定事件的方式

        把一些常用事件直接封装成了函数

          click()

          mouseover()

        这些方法可以直接使用, 带有隐式迭代

        快捷绑定事件

          使用方法:

            1. 元素集合.事件类型(事件处理函数)

            2. 元素集合.事件类型(传入事件处理函数的参数, 事件处理函数)

// 1. 绑定点击事件    
$('div').on('click', function () { 
console.log('点击事件触发')
})
// 使用事件函数     
$('div').click({ name: 'Jack' },
function (e) { console.log('点击事件', e) 
})     
$('div').click(function (e) { 
console.log('点击事件', e)
})

****jquery 唯一的特殊事件

        hover()

        一个结合了移入移出的事件

        使用方法: 元素集合.hover(移入的事件处理函数, 移出的事件处理函数)

        如果你只传递一个参数,  那么移入移出都触发

// 2. 特殊事件 hover   
$('div').hover(    
function () {
console.log('移入') 
},      
function () {
console.log('移出') 
}   
)