1. JQuery操作页面的三大步骤
1. $('css3选择器语法') 就是jq选择器,获得的是jq对象,jq对象可以理解为存放了js对象的数组 (存放了几个js对象不需要关心)
2. jq对象转换为js对象 - jq对象[js对象所在索引] - 可以使用js的语法
3. js对象转换为jq对象 - $(js对象) - 可以使用jq的语法、
4. jq的事件对象,对js事件对象也完全兼容
5. 在jq事件中的this还是js对象,如果要使用jq功能,需要将this转换为jq对象
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Title</title> </head> <body> <h1>标题</h1> <p class="p1">p11111111111111111111111111</p> <p class="p2">p22222222222222222222222222</p> <div> <b>div的加粗内容</b> </div> <form action=""> <input type="text"> </form> </body> <script src="../js/jquery-3.4.1.js"></script> <script> // 1.jq选择器 - 得到的是jq对象 - jq对象可以调用jq库的所有功能 // $('css语法选择器') let h1 = $('h1'); console.log(h1); let p1 = $('p1'); let p2 = $('p2'); console.log(p1, p2); let p = $('p'); console.log(p); // jq对象可以理解为存放了js对象的数组,可以通过索引取值 // 想通过jq对象获取第2个p的文本内容 let _p2 = p[1]; console.log(_p2.innerText); p2 = $(_p2); console.log(p2.text()); // 1. $('css3选择器语法') 就是jq选择器,获得的是jq对象,jq对象可以理解为存放了js对象的数组 (存放了几个js对象不需要关心) // 2. jq对象转换为js对象 - jq对象[js对象所在索引] - 可以使用js的语法 // 3. js对象转换为jq对象 - $(js对象) - 可以使用jq的语法 // 4. jq的事件对象,对js事件对象也完全兼容 // 5. 在jq事件中的this还是js对象,如果要使用jq功能,需要将this转换为jq对象 </script> <script> // 操作页面的三个步骤 // 1.获取标签 // 2.绑定标签 // 3.操作标签 // jq的事件对象,对js事件对象也完全兼容 // $('h1').click(function (ev) { // console.log(ev); // console.log(ev.clientX); // console.log(ev.clientY); // }); // $('h1').on('click', function (ev) { // console.log(ev); // }) // 在jq事件中的this还是js对象,如果要使用jq功能,需要将this转换为jq对象 $('p').click(function () { console.log($(this)); console.log($(this).text()); }); // 文本 // $div.text() 文本内容 // $div.html() 标签内容 // $inp.val() 表单内容 // 需求1:点击h1获取 自身文本内容、div的标签内容、input的表单内容 $('h1').click(function () { console.log($(this).text()); console.log($('div').html()); console.log($('input').val()); }) </script> </html>
2. JQuery的常用操作
操作标签的内容,样式,属性、类。
2.1 内容
$div.text() 文本内容
$div.html() 标签内容
$inp.val() 表单内容
2.2 样式
1. 获取样式:$div.css('css中的样式属性名')
2. 设置样式
①:单一设置 $div.css('css中的样式属性名', '属性值');
②:设置多个 $div.css({ '属性1': '值1', ... '属性n': '值n', });
③:$(this) 可以拿到调用者对象
return 返回值就是要设置的值(可以与自身其他属性,或是页面其他标签,或是自定义逻辑有关系)
$div.css('属性', function (index, oldValue) {
console.log(oldValue);})
2.3 属性
获取属性值:$div.attr('属性名')
设置属性值:$div.attr('属性名', '属性值或函数')
删除属性值:$div.attr('属性名', '')
2.4 类
类名:可以一次性获取提前设置好的一套样式
增加类名:$div.addClass('类名')
删除类名:$div.removeClass('类名')
切换类名:$div.toggleClass('类名')
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Title</title> <style> #h1 { font-size: 36px; text-align: center; } .box { width: 200px; height: 200px; background-color: orange; } .red { background-color: red; border-radius: 50%; } .yellow { background-color: yellow; width: 400px; border-radius: 100px; } .blue { width: 400px; border-radius: 50%; background-color: blue; } </style> </head> <body> <h1 id="h1" style="color: red">标题</h1> <img src="" alt=""> <button class="btn1">红</button> <button class="btn2">黄</button> <button class="btn3">蓝</button> <div class="box"></div> </body> <script src="../js/jquery-3.4.1.js"></script> <script> // 一、文本操作 // $div.text() 文本内容 // $div.html() 标签内容 // $inp.val() 表单内容 // 二、样式操作 // 获取样式: $div.css('css中的样式属性名') // 设置样式: // $div.css('css中的样式属性名', '属性值'); // 单一设置 // $div.css({ // '属性1': '值1', // ... // '属性n': '值n', // }); // $div.css('属性', function (index, oldValue) { // console.log(oldValue); // // $(this) 可以拿到调用者对象 // return 返回值就是要设置的值(可以与自身其他属性,或是页面其他标签,或是自定义逻辑有关系); // }) $('h1').click(function () { // 获取样式 let $this = $(this); let color = $this.css('color'); let fs = $this.css('font-size'); let ta = $this.css('text-align'); console.log(color, parseInt(fs), ta); //设置样式 $this.css('background-color', 'orange'); $this.css({ 'background-color': 'pink', 'border-radius': '10px', 'width': '200px', }); // 设置高为宽的一半 $this.css('height', function () { return ($(this).width())/2; }); // 属性操作 // 获取属性值:$div.attr('属性名') // 设置属性值:$div.attr('属性名', '属性值或函数') // 删除属性值:$div.attr('属性名', '') $('h1').click(function () { let h1_id = $(this).attr('id'); console.log(h1_id); $('img').attr('src', function () { if (Math.random() > 0.5) { return 'https://gss0.bdstatic.com/94o3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=f44714968db1cb132a643441bc3d3d2b/a8773912b31bb05138f6cc51367adab44bede0fd.jpg'; } else { return 'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1562331457&di=89eefbebab0a0a5c07cddbcb2d9c7854&src=http://b-ssl.duitang.com/uploads/item/201408/19/20140819122137_mUtYd.png' } }); }); $(this).attr('id', ''); }); // 四、类名:可以一次性获取提前设置好的一套样式 // 增加类名:$div.addClass('类名') // 删除类名:$div.removeClass('类名') // 切换类名:$div.toggleClass('类名') $('.btn1').click(function () { // 无red类添加,反之去除 $('.box').addClass('red'); $('.box').removeClass('yellow'); $('.box').removeClass('blue'); // $('box').toggleClass('red'); }); $('.btn2').click(function () { let $box = $('.box'); $box[0].className = 'box'; $box.addClass('yellow'); }); $('.btn3').click(function () { $('.box').addClass('blue'); }); </script> </html>
3. JQurey的链式赋值
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Title</title> </head> <body> <h1>标题</h1> </body> <script src="../js/jquery-3.4.1.js"></script> <script> // 之所有jquery支持这种极为方便的链式结构写法,是因为jquery的每一步操作都返回一个jquery对象本身.如果返回的不是本身,就无法继续链式赋值下去 $('h1').css('color', 'orange').css('background', 'red').click(function () { console.log(this) }).text('修改标题'); </script> </html>
4. JQuery操作文档
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Title</title> <style> .d { width: 50px; height: 50px; background-color: orange; border-radius: 50%; } </style> </head> <body> 内容:<input type="text"> 行:<input type="text"> 列:<input type="text"> <p>表格</p> <div> <div class="d d1"></div> <div class="d d2"> <div class="sub"></div> <div class="sub"></div> <div class="sub"></div> </div> <div class="d d3"></div> <div class="d d4"></div> </div> </body> <script src="../js/jquery-3.4.1.js"></script> <script> // 一、 快速定位到某一个jq对象 // 1)在jq集合中快速拿到某一个jq对象: jq对象.eq(index) // $('.d:eq(1)') == $('.d').eq(1) $('.d').eq(1).click(function () { alert(123); }); // 2)在jq集合中都具有相同事件,在事件中如何区别每一个jq对象 // 标签所在层级的索引,不是在jq对象数组中的索引 // $(this) | 索引 $('.d').click(function () { let index = $(this).index(); console.log(index); }); // 二、通过自身快速定位到 "亲戚" // 上兄弟(们) prev(All) // 下兄弟(们) next(All) // 兄弟们 siblings // 孩子们 children // 父亲(们) let $d2 = $('.d2'); console.log($d2); let next = $d2.next(); console.log(next); let prev = $d2.prev(); console.log(prev); //三、动态生成页面结构 // append:添加到...最后 // prepend:添加到...最前 // before:添加到...之前 // after:添加到...之后 let $table = $('<table></table>'); $('body').append($table); $('p').before($table); </script> </html>