本节笔记
推荐学习网站:https://www.w3school.com.cn/jquery/jquery_ajax_load.asp
全选反选取消操作:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <input type="button" value="全选" onclick="chooseAll();" /> <input type="button" value="反选" onclick="reverseAll();" /> <input type="button" value="取消" onclick="cancleAll();" /> <table border="1"> <thead> <tr> <td>选择</td> <td>主机IP</td> <td>PORT</td> </tr> </thead> <tbody id="i1"> <tr> <td> <input type="checkbox" /> </td> <td>192.168.1.3</td> <td>22</td> </tr> <tr> <td> <input type="checkbox" /> </td> <td>192.168.1.4</td> <td>22</td> </tr> <tr> <td> <input type="checkbox" /> </td> <td>192.168.1.5</td> <td>8000</td> </tr> <tr> <td> <input type="checkbox" /> </td> <td>192.168.1.6</td> <td>666</td> </tr> </tbody> </table> <script src="jquery-1.12.4.js"></script> <script> function chooseAll() { // $ = jQuery // prop = property 所有物 $(':checkbox').prop('checked', true); //#id :表单类型操作+prop属性操作 } function cancleAll() { $(':checkbox').prop('checked', false); } function reverseAll() { // $('#i1 :checkbox').each(function (k) { //√ // $('#i1:checkbox').each(function (k) { //X $(':checkbox').each(function (k) { //√ //分析阶段: //找到所有的checkbox对象,然后对每一个对象进行判断,jquery已经内置了循环 // console.log(k, this);//this:DOM对象 // 0 <input type="checkbox"> // 1 <input type="checkbox"> // 2 <input type="checkbox"> // 3 <input type="checkbox"> // console.log($(this)); //jQuery对象 //DOM方法:.属性名 /* if(this.checked){ this.checked = false; }else{ this.checked = true; } */ //jQuery方法:.prop/.attr(属性操作) 函数形式 /* if($(this).prop('checked')){ $(this).prop('checked', false); }else{ $(this).prop('checked', true); } */ //三元运算法 // var v = 条件?真值:假值 var v = $(this).prop('checked')?false:true; $(this).prop('checked', v); // 反选还可以: // $(this).prop('checked',!$(this).prop('checked')); }) } </script> </body> </html>
开关效果:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>样式操作toggleClass</title> <style> .hide{ display: none; } </style> </head> <body> <div> <input id="i1" type='button' value="开关" /> <div class="c1 hide">开灯关灯</div> </div> <script src="jquery-1.12.4.js"></script> <script> //方法一: /* $('#i1').click(function(){ if($('.c1').hasClass('hide')){ $('.c1').removeClass('hide'); }else{ $('.c1').addClass('hide'); } }) */ //方法二:封装 $('#i1').click(function(){ //有就加上,没有就移除 $('.c1').toggleClass('hide'); }) </script> </body> </html>
左侧菜单栏:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>菜单栏</title> <style> .menu{ border: 1px solid red; width: 100px; height: 252px; } .item{ min-height: 30px; } .header{ background-color: #31b0d5; color: #F8F8FF; } .hide{ display: none; } </style> </head> <body> <div class="menu"> <div class="item"> <div class="header">学习课程</div> <div class="content hide">Python</div> <div class="content hide">Linux</div> </div> <div class="item"> <div class="header">讲课老师</div> <div class="content hide">Alix</div> <div class="content hide">Wusir</div> </div> <div class="item"> <div class="header">课程时长</div> <div class="content hide">28周</div> </div> </div> <script src="jquery-1.12.4.js"></script> <script> //链式编程 $('.header').click(function (){ //思路: //找到当前点击的标签 $(this) //找到当前行标签的下一行标签,移除hide,显示内容 //找到父标签 //找到所有的兄弟标签 //找到所有的兄弟标签的content标签加上hide (find) // $(this+div) //X +在引号内部 // $('this + div') //X this变成了字符串 // $('label + input') //√ //以上均是选择器 //下面一行是筛选器(.的形式) // $(this).next() // $(this).next().removeClass('hide'); // $(this).nextAll().removeClass('hide'); √ //注意content类型 // var v = $(this).parent().siblings().find('content').addClass('hide'); X // $(this).parent().siblings().find('.content').addClass('hide'); √ // console.log(v) //合并成一行: $(this).nextAll().removeClass('hide').parent().siblings().find('.content').addClass('hide'); }) </script> </body> </html>
伪添加-假编辑-真删除:low方法
<!DOCTYPE html> <html lang="en"> <!--编辑-属性优化--> <head> <meta charset="UTF-8"> <title>模态对话框-伪添加-假编辑-真删除</title> <style> .shadow{ position: fixed; top: 0; bottom: 0; left: 0; right: 0; background-color: #666666; opacity: 0.6; z-index: 9; } .hide{ display: none; } .modal{ width: 400px; height: 300px; position: fixed; left: 50%; top: 50%; margin-left: -200px; margin-top: -230px; z-index: 10; background-color: #a6e1ec; text-align: center; } </style> </head> <body> <input type="button" value="全选" onclick="chooseAll();" /> <input type="button" value="反选" onclick="reverseAll();" /> <input type="button" value="取消" onclick="cancleAll();" /> <input type="button" value="添加" onclick="addModal();" /> <!--遮罩层--> <div class="shadow hide"></div> <!--模态对话框--> <div class="modal hide"> <p> <input type="text" name="hostname"/> </p> <p> <input type="text" name="port"/> </p> <!-- $('.modal input[name="hostname"]').val(..) $('.modal input[name="v"]').val(text) $('.modal input[name="' + v + '"]').val(text) --> <input type="button" value="确定" onclick="confirmModal();"/> <input type="button" value='取消' onclick="cancelModal();" /> </div> <table border="1"> <thead> <tr> <td>选择</td> <td>主机IP</td> <td>PORT</td> <td>操作</td> </tr> </thead> <tbody> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.3</td> <td name="port">22</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.4</td> <td name="port">22</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.5</td> <td name="port">8000</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.6</td> <td name="port">666</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> </tbody> </table> <script src="jquery-1.12.4.js"></script> <script> // {} 不加; // (); 加; function chooseAll() { $(':checkbox').prop('checked', true); } function cancleAll() { $(':checkbox').prop('checked', false); } function reverseAll() { $(':checkbox').each(function (k) { var v = $(this).prop('checked')?false:true; $(this).prop('checked', v); }) } function addModal() { //因为edit编辑,input输入框有数据,所以,添加前或取消后需要将数据清空 // $('.modal p input[type="text"]').val(''); $('.shadow, .modal').removeClass('hide'); } function cancelModal() { $('.shadow, .modal').addClass('hide'); //因为edit编辑,input输入框有数据,所以,添加前或取消后需要将数据清空 $('.modal p input[type="text"]').val(''); } //edit //找到所有的edit类名 $('.edit').click(function (){ //跳转到模态框 $('.modal, .shadow').removeClass('hide'); //this 代指对应的DOM对象 class='edit' var tds = $(this).parent().prevAll(); //tds是一个jquery对象[],有多个DOM对象 //将所有td DOM对象对应的内容text(),赋值给modal对话框中的input的对应名字name的value //通过属性找到赋值 //写一个函数,对每一个td DOM对象都要进行属性操作each() //1.找到某个td对应原表中的hostname(属性值) //2.获取标签对应的文本内容 tds.each(function(){ //this 代指对应的DOM对象<td></td> var v = $(this).attr('name'); var text = $(this).text(); $('.modal input[name="' + v + '"]').val(text) }) //DOM的具体对象 // console.log(tds[0]); //port // console.log(tds[1]); //hostname // $(tds[0]).text() //获取到文本内容 //将获取到的文本内容给模态对话框中的input中的value // // $('.modal p input[name="port"]').val($(tds[0]).text()); // $('.modal p input[name="hostname"]').val($(tds[1]).text()); }); //删除操作:删除tr的一行 $('.del').click(function(){ $(this).parent().parent().remove(); }); //伪添加:写死法测试 function confirmModal(){ //内部创建td/tr标签 var td1 = document.createElement('td'); var td2 = document.createElement('td'); var td3 = document.createElement('td'); var tr = document.createElement('tr'); //获取td标签的内容 td1.innerHTML = '<input type="checkbox" />'; td2.innerHTML = '192.168.1.0'; td3.innerHTML = '80'; //td添加属性(DOM不能添加属性) // td2.name="hostname"; // td3.name="port"; //将td标签追加到tr标签 $(tr).append(td1); $(tr).append(td2); $(tr).append(td3); //将tr标签追加到表格中 $('table').append(tr); //遮罩层隐藏 $('.shadow, .modal').removeClass('hide'); } //真添加 </script> </body> </html>
真添加-可编辑:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>模态对话框-真添加-2-可编辑</title> <!--问题已解决:新增行,不能编辑删除操作--> <style> .shadow{ position: fixed; top: 0; bottom: 0; left: 0; right: 0; background-color: #666666; opacity: 0.6; z-index: 9; } .hide{ display: none; } .modal{ width: 400px; height: 300px; position: fixed; left: 50%; top: 50%; margin-left: -200px; margin-top: -230px; z-index: 10; background-color: #a6e1ec; text-align: center; } </style> </head> <body> <input type="button" value="全选" onclick="chooseAll();" /> <input type="button" value="反选" onclick="reverseAll();" /> <input type="button" value="取消" onclick="cancleAll();" /> <input type="button" value="添加" onclick="addModal();" /> <!--遮罩层--> <div class="shadow hide"></div> <!--模态对话框--> <div class="modal hide"> <p> <input type="text" name="hostname"/> </p> <p> <input type="text" name="port"/> </p> <!-- $('.modal input[name="hostname"]').val(..) $('.modal input[name="v"]').val(text) $('.modal input[name="' + v + '"]').val(text) --> <input id="if" type="button" value="确定" /> <input type="button" value='取消' onclick="cancelModal();" /> </div> <table border="1"> <thead> <tr> <td>选择</td> <td>主机IP</td> <td>PORT</td> <td>操作</td> </tr> </thead> <tbody> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.3</td> <td name="port">22</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.4</td> <td name="port">22</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.5</td> <td name="port">8000</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.6</td> <td name="port">666</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> </tbody> </table> <script src="../../jquery-1.12.4.js"></script> <script> function chooseAll() { $(':checkbox').prop('checked', true); } function cancleAll() { $(':checkbox').prop('checked', false); } function reverseAll() { $(':checkbox').each(function (k) { var v = $(this).prop('checked')?false:true; $(this).prop('checked', v); }) } function addModal() { //因为edit编辑,input输入框有数据,所以,添加前或取消后需要将数据清空 // $('.modal p input[type="text"]').val(''); $('.shadow, .modal').removeClass('hide'); } function cancelModal() { $('.shadow, .modal').addClass('hide'); //因为edit编辑,input输入框有数据,所以,添加前或取消后需要将数据清空 $('.modal p input[type="text"]').val(''); } //真添加-1 /* $('#if').click(function(){ //td1:checkbox var td1 = document.createElement('td'); var td2 = document.createElement('td'); var td3 = document.createElement('td'); var td4 = document.createElement('td'); var cb = document.createElement('input'); cb.type = 'checkbox'; //td2:hostname $(td2).attr('name', 'hostname'); td2.innerText = $('.modal').find('input[name="hostname"]').val(); //td3:port $(td3).attr('name', 'port'); td3.innerText = $('.modal').find('input[name="port"]').val(); //td4:操作类型 td4.innerHTML = "<a class=\"edit\">编辑</a> | <a class=\"del\">删除</a>"; //添加嵌套 $(td1).append(cb); // console.log(td2); $('table').append(td1, td2, td3, td4); //遮罩层 $('.modal, .shadow').addClass('hide'); }); */ //真添加-2 $('#if').click(function () { //创建tr标签 var tr = document.createElement('tr'); //创建checkbox输入框 var myc = document.createElement('td'); $(myc).html('<input type="checkbox" />'); //创建编辑/删除操作 var myd = document.createElement('td'); $(myd).html("<a class=\"edit\">编辑</a> | <a class=\"del\">删除</a>"); console.log(myc); $(this).prevAll().each(function () { //获取name属性 var name = $(this).children(":first").attr('name'); //<p>没有name属性$(this) = <p></p> // var name = $(this).attr('name'); // X //获取索引和用户输入值 // var index = $(this).find('input[type="text"]').index(); var v = $(this).find('input[type="text"]').val(); console.log(v); console.log(name); //创建td html 并赋予相应的name属性及内容 var myTd = document.createElement('td'); $(myTd).attr('name', name); $(myTd).text(v); //误区:td没有value属性 // $(myTd).val(v); X // myTd.value = v; X console.log(myTd); //把td追加到tr中 tr.prepend(myTd); }); //把内容追加到表格中 tr.prepend(myc); tr.appendChild(myd); $('table').append(tr); //清除遮罩层 $('.modal, .shadow').addClass('hide'); }); //edit //新添加内容不能编辑、删除 /* $('.edit').click(function (){ //跳转到模态框 $('.modal, .shadow').removeClass('hide'); //this 代指对应的DOM对象 class='edit' var tds = $(this).parent().prevAll(); //tds是一个jquery对象[],有多个DOM对象 //将所有td DOM对象对应的内容text(),赋值给modal对话框中的input的对应名字name的value //通过属性找到赋值 //写一个函数,对每一个td DOM对象都要进行属性操作each() //1.找到某个td对应原表中的hostname(属性值) //2.获取标签对应的文本内容 tds.each(function(){ //this 代指对应的DOM对象<td></td> var v = $(this).attr('name'); var text = $(this).text(); $('.modal input[name="' + v + '"]').val(text) }) //DOM的具体对象 // console.log(tds[0]); //port // console.log(tds[1]); //hostname // $(tds[0]).text() //获取到文本内容 //将获取到的文本内容给模态对话框中的input中的value // // $('.modal p input[name="port"]').val($(tds[0]).text()); // $('.modal p input[name="hostname"]').val($(tds[1]).text()); }); */ //必须保证table下必须有edit类,td不符合要求 $('table').delegate('.edit', 'click', function (){ //跳转到模态框 $('.modal, .shadow').removeClass('hide'); //this 代指对应的DOM对象 class='edit' var tds = $(this).parent().prevAll(); //tds是一个jquery对象[],有多个DOM对象 //将所有td DOM对象对应的内容text(),赋值给modal对话框中的input的对应名字name的value //通过属性找到赋值 //写一个函数,对每一个td DOM对象都要进行属性操作each() //1.找到某个td对应原表中的hostname(属性值) //2.获取标签对应的文本内容 tds.each(function(){ //this 代指对应的DOM对象<td></td> var v = $(this).attr('name'); var text = $(this).text(); $('.modal input[name="' + v + '"]').val(text) }) //DOM的具体对象 // console.log(tds[0]); //port // console.log(tds[1]); //hostname // $(tds[0]).text() //获取到文本内容 //将获取到的文本内容给模态对话框中的input中的value // // $('.modal p input[name="port"]').val($(tds[0]).text()); // $('.modal p input[name="hostname"]').val($(tds[1]).text()); }); //删除操作:删除tr的一行 //新添加内容不能编辑、删除 /* $('.del').click(function(){ $(this).parent().parent().remove(); }); */ $('table').delegate('.del', 'click', function(){ $(this).parent().parent().remove(); }); </script> </body> </html>
真添加-真编辑-真删除:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>uson-真添加-真编辑-真删除</title> <style> .shadow{ position: fixed; top: 0; bottom: 0; left: 0; right: 0; background-color: #666666; opacity: 0.6; z-index: 9; } .hide{ display: none; } .modal{ width: 400px; height: 300px; position: fixed; left: 50%; top: 50%; margin-left: -200px; margin-top: -230px; z-index: 10; background-color: #a6e1ec; text-align: center; } </style> </head> <body> <input type="button" value="全选" onclick="chooseAll();" /> <input type="button" value="反选" onclick="reverseAll();" /> <input type="button" value="取消" onclick="cancleAll();" /> <input type="button" value="添加" onclick="addModal();" /> <!--遮罩层--> <div class="shadow hide"></div> <!--模态对话框--> <div class="modal hide"> <p> <input type="text" name="hostname"/> </p> <p> <input type="text" name="port"/> </p> <!-- $('.modal input[name="hostname"]').val(..) $('.modal input[name="v"]').val(text) $('.modal input[name="' + v + '"]').val(text) --> <input id="if" type="button" value="确定" /> <!--真添加-2专用--> <!--<input id="if" type="button" value="确定" onclick="confirmModal();"/>--><!--伪添加--> <input type="button" value='取消' onclick="cancelModal();" /> </div> <table border="1"> <thead> <tr> <td>选择</td> <td>主机IP</td> <td>PORT</td> <td>操作</td> </tr> </thead> <tbody> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.3</td> <td name="port">22</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.4</td> <td name="port">22</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.5</td> <td name="port">8000</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> <tr> <td> <input type="checkbox" /> </td> <td name="hostname">192.168.1.6</td> <td name="port">666</td> <td> <a class="edit">编辑</a> | <a class="del">删除</a> </td> </tr> </tbody> </table> <script src="../../jquery-1.12.4.js"></script> <script> function chooseAll() { $(':checkbox').prop('checked', true); } function cancleAll() { $(':checkbox').prop('checked', false); } function reverseAll() { $(':checkbox').each(function (k) { var v = $(this).prop('checked')?false:true; $(this).prop('checked', v); }) } function addModal() { //因为edit编辑,input输入框有数据,所以,添加前或取消后需要将数据清空 // $('.modal p input[type="text"]').val(''); $('.shadow, .modal').removeClass('hide'); } function cancelModal() { $('.shadow, .modal').addClass('hide'); //因为edit编辑,input输入框有数据,所以,添加前或取消后需要将数据清空 $('.modal p input[type="text"]').val(''); } //$(func);----->页面框架函数,内部只能是$(..).这种形式的事件。 $(function() { //真添加-2 $('#if').click(function () { //创建tr标签 var tr = document.createElement('tr'); //创建checkbox输入框 var myc = document.createElement('td'); $(myc).html('<input type="checkbox" />'); //创建编辑/删除操作 var myd = document.createElement('td'); $(myd).html("<a class=\"edit\">编辑</a> | <a class=\"del\">删除</a>"); console.log(myc); $(this).prevAll().each(function () { //获取name属性 var name = $(this).children(":first").attr('name'); //<p>没有name属性$(this) = <p></p> // var name = $(this).attr('name'); // X //获取索引和用户输入值 // var index = $(this).find('input[type="text"]').index(); var v = $(this).find('input[type="text"]').val(); console.log(v); console.log(name); //创建td html 并赋予相应的name属性及内容 var myTd = document.createElement('td'); $(myTd).attr('name', name); $(myTd).text(v); //误区:td没有value属性 // $(myTd).val(v); X // myTd.value = v; X console.log(myTd); //把td追加到tr中 tr.prepend(myTd); }); //把内容追加到表格中 tr.prepend(myc); tr.appendChild(myd); //判断条件:如果是编辑(),不追加一行(在edit函数已做处理) if($(this).attr('name') === 'editing'){ var index = $(this).attr('index'); $('.edit').parent().parent().eq(index).after(tr); $('.edit').parent().parent().eq(index).remove(); }else{ $('table').append(tr); } //清除遮罩层 $('.modal, .shadow').addClass('hide'); //因为edit编辑,input输入框有数据,所以,添加前或取消后需要将数据清空 $('.modal p input[type="text"]').val(''); }); //edit $('table').delegate('.edit', 'click', function (){ //跳转到模态框 $('.modal, .shadow').removeClass('hide'); //this 代指对应的DOM对象 class='edit' var tds = $(this).parent().prevAll(); //tds是一个jquery对象[],有多个DOM对象 //将所有td DOM对象对应的内容text(),赋值给modal对话框中的input的对应名字name的value //通过属性找到赋值 //写一个函数,对每一个td DOM对象都要进行属性操作each() //1.找到某个td对应原表中的hostname(属性值) //2.获取标签对应的文本内容 tds.each(function(){ //this 代指对应的DOM对象<td></td> var v = $(this).attr('name'); var text = $(this).text(); $('.modal input[name="' + v + '"]').val(text) }); //点击编辑事件,让他自动给确定添加按钮标签加上 name=“editing"属性 //这样,编辑的事件,就不会另追加一行 //在确定按钮点击时,做个判断即可 $('#if').attr('name', 'editing'); var index = $(this).parent().parent().index(); $('#if').attr('index', index); //DOM的具体对象 // console.log(tds[0]); //port // console.log(tds[1]); //hostname // $(tds[0]).text() //获取到文本内容 //将获取到的文本内容给模态对话框中的input中的value // // $('.modal p input[name="port"]').val($(tds[0]).text()); // $('.modal p input[name="hostname"]').val($(tds[1]).text()); }); //删除操作 $('table').delegate('.del', 'click', function(){ $(this).parent().parent().remove(); }); }); </script> </body> </html>

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>uson-真添加-真编辑-真删除</title> 6 <style> 7 .shadow{ 8 position: fixed; 9 top: 0; 10 bottom: 0; 11 left: 0; 12 right: 0; 13 background-color: #666666; 14 opacity: 0.6; 15 z-index: 9; 16 } 17 .hide{ 18 display: none; 19 } 20 .modal{ 21 width: 400px; 22 height: 300px; 23 position: fixed; 24 left: 50%; 25 top: 50%; 26 margin-left: -200px; 27 margin-top: -230px; 28 z-index: 10; 29 background-color: #a6e1ec; 30 31 text-align: center; 32 } 33 </style> 34 </head> 35 <body> 36 <input type="button" value="全选" onclick="chooseAll();" /> 37 <input type="button" value="反选" onclick="reverseAll();" /> 38 <input type="button" value="取消" onclick="cancleAll();" /> 39 <input type="button" value="添加" onclick="addModal();" /> 40 41 <!--遮罩层--> 42 <div class="shadow hide"></div> 43 44 <!--模态对话框--> 45 <div class="modal hide"> 46 <p> 47 <input type="text" name="hostname"/> 48 </p> 49 <p> 50 <input type="text" name="port"/> 51 </p> 52 <input id="if" type="button" value="确定" /> 53 <input type="button" value='取消' onclick="cancelModal();" /> 54 </div> 55 56 <table border="1"> 57 <thead> 58 <tr> 59 <td>选择</td> 60 <td>主机IP</td> 61 <td>PORT</td> 62 <td>操作</td> 63 </tr> 64 </thead> 65 <tbody> 66 <tr> 67 <td> 68 <input type="checkbox" /> 69 </td> 70 <td name="hostname">192.168.1.3</td> 71 <td name="port">22</td> 72 <td> 73 <a class="edit">编辑</a> | <a class="del">删除</a> 74 </td> 75 </tr> 76 </tbody> 77 </table> 78 <script src="jquery-1.12.4.js"></script> 79 <script> 80 function chooseAll() { 81 $(':checkbox').prop('checked', true); 82 } 83 function cancleAll() { 84 $(':checkbox').prop('checked', false); 85 } 86 function reverseAll() { 87 $(':checkbox').each(function (k) { 88 var v = $(this).prop('checked')?false:true; 89 $(this).prop('checked', v); 90 }) 91 } 92 93 function addModal() { 94 $('.shadow, .modal').removeClass('hide'); 95 } 96 function cancelModal() { 97 $('.shadow, .modal').addClass('hide'); 98 $('.modal p input[type="text"]').val(''); 99 } 100 101 $(function() { 102 $('#if').click(function () { 103 var tr = document.createElement('tr'); 104 var myc = document.createElement('td'); 105 $(myc).html('<input type="checkbox" />'); 106 107 var myd = document.createElement('td'); 108 $(myd).html("<a class=\"edit\">编辑</a> | <a class=\"del\">删除</a>"); 109 110 $(this).prevAll().each(function () { 111 var name = $(this).children(":first").attr('name'); 112 var v = $(this).find('input[type="text"]').val(); 113 114 var myTd = document.createElement('td'); 115 $(myTd).attr('name', name); 116 $(myTd).text(v); 117 tr.prepend(myTd); 118 119 }); 120 tr.prepend(myc); 121 tr.appendChild(myd); 122 123 //判断条件:如果是编辑(),不追加一行(在edit函数已做处理) 124 if ($(this).attr('name') === 'editing') { 125 var index = $(this).attr('index'); 126 $('.edit').parent().parent().eq(index).after(tr); 127 $('.edit').parent().parent().eq(index).remove(); 128 } else { 129 $('table').append(tr); 130 } 131 132 $('.modal, .shadow').addClass('hide'); 133 $('.modal p input[type="text"]').val(''); 134 }); 135 136 //edit 137 $('table').delegate('.edit', 'click', function () { 138 $('.modal, .shadow').removeClass('hide'); 139 var tds = $(this).parent().prevAll(); 140 141 tds.each(function () { 142 var v = $(this).attr('name'); 143 var text = $(this).text(); 144 145 $('.modal input[name="' + v + '"]').val(text) 146 }); 147 148 $('#if').attr('name', 'editing'); 149 var index = $(this).parent().parent().index(); 150 $('#if').attr('index', index); 151 152 153 //del 154 $('table').delegate('.del', 'click', function () { 155 $(this).parent().parent().remove(); 156 }); 157 }); 158 }); 159 </script> 160 </body> 161 </html>
添加删除和复制以及delegate事件绑定测试:low方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文档处理 - 添加删除复制</title> <style> .pg-body{ border: 1px solid red; margin: 0 auto; width: 360px; height: 200px; background-color: #c4e3f3; /*text-align: center;*/ } </style> </head> <body> <div class="pg-body"> <input id="i1" type="text" /> <input id="i2" type="button" value="添加" /> <input id="i3" type="button" value="删除" /> <input id="i4" type="button" value="克隆" /> <!--<ul id="ul">--> <ul> <li>学习课程</li> <li>讲课老师</li> <li>学校地址</li> </ul> </div> <script src="jquery-1.12.4.js"></script> <script> //添加 $('#i2').click(function (){ //获取用户输入的值 var v = $('#i1').val(); //将获取到的值追加到li标签的指定位置 //格式: var temp = "<li>" + v + "</li>"; // console.log(temp); // $('ul').append(temp); $('ul').prepend(temp); }); //删除 $('#i3').click(function (){ var index = $('#i1').val(); //v是字符串 eq(字符串) $('ul li').eq(index).remove(); }); //克隆 $('#i4').click(function(){ var index = $('#i1').val(); //将下面克隆一份的值追加到指定位置 var v = $('ul li').eq(index).clone(); // $('ul').append(v); $('ul').prepend(v); }); //delegate事件绑定测试 /*//添加的内容,点击无效 $('ul li').click(function(){ var v = $(this).text(); alert(v); }); */ /* $('ul li').bind('click', function(){ var v = $(this).text(); alert(v); }); */ /* $('ul li').on('click', function(){ var v = $(this).text(); alert(v); }); */ $('ul').delegate('li', 'click', function(){ // 新增标签依然可以触发事件 var v = $(this).text(); alert(v); }); </script> </body> </html>
模拟Tab菜单
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Tab菜单实现-属性操作</title> <style> .hide{ display: none; } .menu{ /*border: 1px solid red;*/ background-color: #eeeeee; /*给定了高度,子级float就不用清除浮动了*/ height: 38px; line-height: 38px; } .menu .item{ float: left; border-right: 2px solid red; padding: 0 8px; cursor: pointer; } .menu .active{ background-color: #31b0d5; } .content{ border: 1px solid red; } </style> </head> <body> <div style="width: 500px; margin: 0 auto;"> <div class="menu"> <div class="item active" a="1">学习课程</div> <div class="item" a="2">讲课老师</div> <div class="item" a="3">学习周期</div> <div class="item" a="4">就业情况</div> <!--不用清除浮动,因为父级给定了高度--> </div> <div class="content"> <div class="main" b="1"> <p>Python</p> <p>Linux</p> <p>Go</p> <p>C++</p> </div> <div class="main hide" b="2"> <p>Alex</p> <p>Wusir</p> </div> <div class="main hide" b="3"> <p>28周</p> </div> <div class="main hide" b="4"> <p>98%已就业</p> <p>2%重修或未就业</p> </div> </div> </div> <script src="jquery-1.12.4.js"></script> <script> //每个菜单获取“点击事件” $('.item').click(function(){ // $(this) //当前点击的对象:item //菜单: $(this).addClass('active').siblings().removeClass('active'); //内容: //思路:将讲课老师与其内容对应起来 //1.获取到item中讲课老师的属性值(现在可以新增一个属性:相同属性名不同属性值) //2.把获取到的属性值赋值给对应内容的属性名 (相同属性值不同属性名) var item_v = $(this).attr('a'); // console.log(item_v); //$('content') 字体颜色:绿色, 而应该是深蓝色字体,切记 $('.content').children("[b='" + item_v + "']").removeClass('hide').siblings().addClass('hide'); // 用添加属性方式实现 //内容: //思路:将讲课老师与其内容对应起来 //获取item的对应的索引值 //获取content对应的孩子的索引值 //$('.content').children().eq( $(this).index() ).removeClass('hide').siblings().addClass('hide'); // 用获取索引方式实现 }) </script> </body> </html>
点赞特效:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jquery点赞特效-css处理</title> <style> .pg-body{ /*border: 1px solid red;*/ /*padding: 30px;*/ text-align: center; } .item{ border: 1px solid red; padding: 30px; width: 300px; margin: 0 auto; cursor: pointer; /*点赞样式设置*/ position: relative; } </style> </head> <body> <div class="pg-body"> <div class="item"> <span>赞</span> </div> <div class="item"> <span>赞</span> </div> <div class="item"> <span>赞</span> </div> <div class="item"> <span>赞</span> </div> </div> <script src="jquery-1.12.4.js"></script> <script> $('.item').click(function (){ // console.log(this); Addfunc(this); }); function Addfunc(self){ //初始值设置 var top = 30; var fontsize = 15; var right = 150; var color = 'red'; var opacity = 1; //创建一个span标签,并赋值内容(+1) // var tag = $(this).children() var tag = document.createElement('span'); //+1的效果 // tag.innerText = '+1'; //dom模式 $(tag).text('+1'); //jquery模式 //给span标签添加各种样式 //字体位置position $(tag).css('position', 'absolute'); $(tag).css('top', top + 'px'); $(tag).css('right', right + 'px'); //字体大小、颜色 $(tag).css('font-size', fontsize + 'px'); $(tag).css('color', color); //设置透明度opcity $(tag).css('opacity', opacity); // console.log(tag); //最后将span标签及样式追加到item这个div下面 $(self).append(tag); //每100ms改变一次样式,形成动态特效:定时器setInterval //obj:定时器的一个句柄、对象 var obj = setInterval(function(){ // console.log(top); 可以外层函数的局部变量top=30 //动态改变初始值 top = top -10; fontsize = fontsize + 5; right = right - 10; // color = 'red'; opacity = opacity - 0.2; //opacity单词不要写错了 // $(tag).css('position', 'absolute'); $(tag).css('top', top + 'px'); $(tag).css('right', right + 'px'); $(tag).css('font-size', fontsize + 'px'); // $(tag).css('color', color); $(tag).css('opacity', opacity); console.log(opacity);//发现:opacity 没有等于0的时候 //设置条件,满足条件终止定时器 // if(opcity === 0){ if(opacity < 0){ console.log(123); clearInterval(obj); //移除tag特效标签 // $(self).append(*); X // $(self).remove(void); X $(tag).remove(); } }, 100); } // 可以用$(function(){ // xxoo // });当框架加载完成之后,自动执行 </script> </body> </html>
移动面板
实例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>实例:移动面板-1</title> </head> <body> <div style="border: 1px solid #ddd;width: 600px;position: absolute;"> <div id="title" style="background-color: black;height: 40px;"></div> <div style="height: 300px;"></div> </div> <script type="text/javascript" src="jquery-1.12.4.js"></script> <script> $(function(){ $('#title').mouseover(function(){ $(this).css('cursor','move'); }).mousedown(function(e){ //console.log($(this).offset()); var _event = e || window.event; console.log("_event, e:", _event, e, window.event); // 在未拖动之前,使用的是e值 var ord_x = _event.clientX; var ord_y = _event.clientY; console.log("ord: x,y:", ord_x, ord_y); // 鼠标按下的坐标 var parent_left = $(this).parent().offset().left; var parent_top = $(this).parent().offset().top; console.log("parent:left,top:", parent_left, parent_top); // div左上角坐标(8, 8) $(this).bind('mousemove', function(e){ var _new_event = e || window.event; var new_x = _new_event.clientX; var new_y = _new_event.clientY; console.log("new: x,y:", _new_event, e, new_x, new_y); var x = parent_left + (new_x - ord_x); var y = parent_top + (new_y - ord_y); console.log("new2: x,y:", new_x, ord_x); console.log("new2: x,y:", x, y); $(this).parent().css('left',x+'px'); $(this).parent().css('top',y+'px'); }) }).mouseup(function(){ $(this).unbind('mousemove'); }); }) </script> </body> </html>
阻止事件的发生:
以a标签为例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>阻止事件发生-引入</title> </head> <body> <a onclick=" return Click();" href="http://www.cohui.top">智汇部落</a> <a id="i1" href="http://www.cohui.top">Uson</a> <script src="jquery-1.12.4.js"></script> <script> //dom方式 function Click(){ alert(123); //组织后面事件的发生 return false; } //jQuery方式 $('#i1').click(function(){ alert(456); //组织后面事件的发生 return false; }); </script> </body> </html>
阻止事件发生案例之表单验证:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>阻止事件发生 - 表单验证 - 加强版</title> <!--输入值为空,红字提醒--> <style> .error{ color: red; } </style> </head> <body> <form id="f1" action="复习/jquery-全选反选取消.html" method="post"> <div><input type="text" /></div> <div><input type="text" /></div> <div><input type="password" /></div> <div><input type="text" /></div> <div><input type="text" /></div> <div><input type="submit" value="提交"/></div> </form> <script src="jquery-1.12.4.js"></script> <script> $(':submit').click(function () { //标志位 var flag = true; //文字提醒2,清空所有提示 $('.error').remove(); //获取所有input输入框的jQuery对象,并对每一项进行循环操作 // $(':input[type="text"], input[type="password"]'); // $(':input[type="text"], input[type="password"]').each(function () { $('#f1').find(' input[type="text"], input[type="password"] ').each(function () { //获取用户输入的值 var v = $(this).val(); if(v.length <= 0){ // console.log(1); //文字提醒1 //1.创建标签span //2.创建class类名=error //3.赋值给内容 var tag = document.createElement('span'); tag.innerHTML = '必填'; //内容不为空时,不显示,用于每次清空操作 tag.className = 'error'; $(this).after(tag); //阻止后面事件的发生,当用户有一个输入框输入为空,就会跳出所有循环(后面的循环不执行) //进入外层循环,相当于break,终止了后面的整个循环。 //问题:跳出去没问题,但是外层循环如果直接设死return false;直接不能提交表单,判断无意义。 // 如果是return true(不写默认),输入框是否为空,都会提交,判断也无意义。 // 所以:加上标志位flag做判断 flag = false; // return false; //break后面的循环不再判断 } }); // console.log(6666); return flag; //默认可以提交表单,如果内部循环检测到问题,才否定标志位的值,阻止提交事件的发生。 }); </script> </body> </html>
那些不同的高度:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jQuery获取元素宽高(内边距、边框和外边距)</title> <style> .div1 { width: 100px; height: 100px; padding: 100px; margin: 100px; border: 10px solid #00FFFF; background-color: blue; } </style> </head> <body> <div class="div1"></div> <script src="jquery-1.12.4.js"></script> <script> $(function () { var div = $(".div1"); // 返回元素的宽、高:100 var width = div.width(); var height = div.height(); console.log("width纯宽度:" + width + " height纯高度:" + height); // 返回元素的宽、高(包括内边距padding):300 var innerWidth = div.innerWidth(); var innerHeight = div.innerHeight(); console.log("innerWidth宽度(包括内边距):" + innerWidth + " innerHeight高度(包括内边距):" + innerHeight); // 返回元素的高度(包括内边距padding和边框border):320 var outerWidth = div.outerWidth(); var outerHeight = div.outerHeight(); console.log("outerWidth宽度(包括内边距和边框):" + outerWidth + " outerHeight高度(包括内边距和边框):" + outerHeight); // 返回元素的高度(包括内边距padding、边框border和外边距margin):520 var outerWidthTrue = div.outerWidth(true); var outerHeightTrue = div.outerHeight(true); console.log("outerWidthTrue宽度(包括内外边距和边框):" + outerWidthTrue + " outerHeightTrue高度(包括内外边距和边框):" + outerHeightTrue); }); </script> <!-- 运行结果: 宽度:100 高度:100 包括内边距 宽度:300 高度:300 包括内边距和边框 宽度:320 高度:320 包括内外边距和边框 宽度:520 高度:520 --> </body> </html>
本节笔记:
http://jquery.cuishifeng.cn/ 模块 《=》类库 DOM/BOM/JavaScript的类库 版本: 1.x 1.12(兼容性最好) 以上版本均忽略了兼容性 2.x 3.x 转换: jquery对象[0] => Dom对象 Dom对象 => $(Dom对象) $('#i1')[0] = document.getElementById('i1') ==>[0] = <></> 一、查找元素 DOM 10左右 jQuery: 选择器,直接找到某个或者某类标签(括号内只能是字符串) 1. id $('#id') 2. class <div class='c1'></div> $(".c1") 3. 标签 <div id='i10' class='c1'> <a>f</a> <a>f</a> </div> <div class='c1'> <a>f</a> </div> <div class='c1'> <div class='c2'> </div> </div> $('a') 4. 组合a <div id='i10' class='c1'> <a>f</a> <a>f</a> </div> <div class='c1'> <a>f</a> </div> <div class='c1'> <div class='c2'> </div> </div> $('a') $('.c2') $('a,.c2,#i10') 5. 层级(可以隔代) $('#i10 a') 子子孙孙的a标签 $('#i10>a') 儿子 6. 基本 :first # $('#id>a:first') :last :eq() # $('#id a:eq(0)') 索引从0开始 7. 属性([]) $('[alex]') 具有alex属性的所有标签 $('[alex="123"]') alex属性等于123的标签 <input type='text'/> <input type='text'/> <input type='file'/> <input type='password'/> $("input[type='text']") 8.表单 $(':text') ==>$("input[type='text']") 找所有input type='text'的标签 实例: 多选,反选,全选 - 选择器 - 注意有空格$('#tb :checkbox'),上下层级 $('#tb :checkbox').prop('checked'); 获取值 $('#tb :checkbox').prop('checked', true); 设置值 - jQuery方法内置循环: $('#tb :checkbox').each(){} - $('#tb :checkbox').each(function(k){ // k当前索引 // this:DOM对象,代指当前循环的元素 $(this) }) - 三元运算: var v = 条件 ? 真值 : 假值 筛选(.xx()) $('#i1').next() $('#i1').nextAll() $('#i1').nextUntil('#ii1') <div> <a>asdf</a> <a>asdf</a> <a id='i1'>asdf</a> <a>asdf</a> <a id='ii1'>asdf</a> <a>asdf</a> </div> $('#i1').prev() $('#i1').prevAll() $('#i1').prevUntil('#ii1') $('#i1').parent() 父标签 $('#i1').parents() 找到所有的父级,直到祖宗html $('#i1').parentsUntil() $('#i1').children() 所有的孩子标签 $('#i1').siblings() 所有的兄弟标签 $('#i1').find() 子子孙孙中找,自动循环找 $('li:eq(1)') 选择器(可以字符串拼接) $('li').eq(1) 筛选器(根据索引值从多个中DOM对象中帅选) first() last() hasClass(class) 文本操作: $(..).text() # 获取文本内容 $(..).text(“<a>1</a>”) # 设置文本内容 $(..).html() $(..).html("<a>1</a>") 支持所有具有value属性的本文操作(input/select/textarea...) $(..).val() $(..).val(..) 样式操作:(Jquery内部做了循环) addClass removeClass toggleClass 开关效果('hide'),有hide就移除,没有就添加 属性操作: # 专门用于做自定义属性 $(..).attr('n') $(..).attr('n','v') $(..).removeAttr('n') <input type='checkbox' id='i1' /> # 专门用于====> chekbox, radio $(..).prop('checked') $(..).prop('checked', true) 建议 解析: js.3版本以下bug处理的不彻底(3.x版本没有该问题): 先:$(..).attr('checked', 'checked') 不建议 再:$(..).removeAttr('checked') 再:$(..).attr('checked', 'checked')设置无效,只能使用prop PS: index 获取索引位置 文档处理: append 标签内部后追加 prepend 标签内部前追加 after 当前标签后追加 before 当前标签前追加 remove empty 仅清空内容部分 clone 克隆、复制- css处理 $('t1').css('样式名称', '样式值') 点赞特效: - $('t1').append() - $('t1').remove() - setInterval - 透明度 1 》 0 - position - 字体大小,位置 位置: $(window).scrollTop() 获取 $(window).scrollTop(0) 设置 scrollLeft([val]) offset() 获取标签在页面的位置坐标 offset().left 指定标签在html中的坐标 offset().top 指定标签在html中的坐标 默认页面上面左边都有8px边距 position() 指定标签相对父标签(relative)标签的坐标 <div style='relative'> <div> <div id='i1' style='position:absolute;height:80px;border:1px'></div> </div> </div> $('i1').height() # 获取标签的高度 = 纯高度 $('i1').innerHeight() # = 纯高度 + padding $('i1').outerHeight() # = 纯高度 + padding + border $('i1').outerHeight(true) # = 纯高度 + padding + border + margin # 纯高度,边框,外边距,内边距 事件 DOM: 三种绑定方式 jQuery: $('.c1').click() $('.c1')..... $('.c1').bind('click',function(){ }) $('.c1').unbind('click',function(){ }) *************特殊(采用委托的方式):************* 触发事件时,才绑定当前标签a,解析时并没有绑定,不同于其他 适用于:新增的标签可以继续触发事件 $('.c').delegate('a', 'click', function(){ }) $('.c').undelegate('a', 'click', function(){ }) $('.c1').on('click', function(){ }) $('.c1').off('click', function(){ }) 阻止事件发生 当原生事件与后天事件集于一身时,后天事件优先执行(checkbox事件例外),再执行原生事件(如a标签,submit事件...),我们如果只想它执行后天事件,则可以: DOM模式下: 1)在标签行的事件函数名前添加:return ; 2)函数内部添加:return false; (可以阻止a标签的href事件的发生) jQuery模式下: 函数内添加:return false即可 注:checkbox事件优先于我们绑定的事件,先执行。 # 当页面框架(如果图片内容加载慢,就不会管它)加载完成之后,自动执行 $(function(){ //$(函数) // $(...) }) 还有第二种方式: //$(document).ready(函数) $(document).ready(function(){ // $('.slider').bxSlider(); }); 还有第三种方式:// window.onload = 函数 window.onload = function(){ var oDiv = document.querySelector('#div1'); var aLi = document.querySelectorAll('.list li'); alert(aLi.length); } jQuery扩展: - $.extend $.方法 - $.fn.extend $(..).方法 (比上面多个选择器) 用自执行函数()()解决不同插件之间全局变量的冲突问题 (function(){ var status = 1; // 封装全局变量 })(jQuery) 二、操作元素 ===》实例: 作业: 一: $('i1').height() # 获取标签的高度 纯高度 $('i1').innerHeight() # 获取边框 + 纯高度 + ? $('i1').outerHeight() # 获取边框 + 纯高度 + ? $('i1').outerHeight(true) # 获取边框 + 纯高度 + ? # 纯高度,边框,外边距,内边距 二、所有实例敲一遍 三、编辑框
jQuery扩展实例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <a id="i1" href="http://www.cohui.top">Uson</a> <script src="../jquery-1.12.4.js"></script> <script> /* jQuery扩展1 $.extend({ 'Alex': function () { return 'sb'; } }); var v = $.Alex(); alert(v); */ /*jQuery扩展2*/ $.fn.extend({ 'Uson': function () { return 'Python'; } }); // var v = $('#i1').Uson(); // 直接弹窗 // alert(v); var v = $('#i1').click(function () { var v = $(this).Uson(); alert(v); // 触发点击事件弹窗 }); </script> </body> </html>
小知识:
js中可能用到的:
// js中可能用到的: a = [[1, 3], ] ===>取值:a[0][0]、 a[0][1] b = [{'name': 'Uson', 'age': 26, }] ===> 取值:b[0].name, b[0].age
返回顶部实例(当在顶部位置不显示):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> .back{ position: fixed; bottom: 0px; right: 0px; } .hide{ display: none; } </style> </head> <body> <div style="height: 2000px;"></div> <div onclick="GoTop()" class="back hide">返回顶部</div> <script src="jquery-1.12.4.js"></script> <script type="text/javascript"> function GoTop(){ //返回顶部 $(window).scrollTop(0); } $(function(){ $(window).scroll(function(){ //当滚动滑轮时,执行函数体 //获取当前滑轮滚动的高度 var top = $(window).scrollTop(); if(top>100){ //展示“返回顶部” $('.back').removeClass('hide'); }else{ //隐藏“返回顶部” $('.back').addClass('hide'); } }); }); </script> </body> </html>
滚动菜单:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div> <div id="currentPosition" style="position: fixed;top: 0px;right: 0px;"></div> <div> <div class="chapter" style="height: 500px;"> <h1>第一张</h1> </div> <div class="chapter" style="height: 1500px;"> <h1>第二张</h1> </div> <div class="chapter" style="height: 30px;"> <h1>第三张</h1> </div> </div> </div> <script src="jquery-1.12.4.js" type="text/javascript"></script> <script type="text/javascript"> $(function(){ $(window).scroll(function(){ var scroll_top = $(window).scrollTop(); var list = []; $.each($('.chapter'), function(i){ var current_height = $($('.chapter')[i]).offset().top; list.push(current_height); }); $.each(list,function(i){ if (scroll_top+$(window).height() == $(document).height()){ $('#currentPosition').text($('.chapter').last().text()); return } if (scroll_top>list[i]){ $('#currentPosition').text($($('.chapter')[i]).text()); return } }) }) }); </script> </body> </html>
注册登录实例:
源码下载:(点击下载)
加载:
<html> <head> <script type="text/javascript" src="jquery-1.12.4.js"></script> <script type="text/javascript"> $(document).ready(function(){ $(".btn1").click(function(){ $("p").fadeOut() // https://common.cnblogs.com/images/loading.gif }); $(".btn2").click(function(){ $("p").fadeIn(); }); }); </script> </head> <body> <p>This is a paragraph.</p> <button class="btn1">Hide</button> <button class="btn2">Show</button> </body> </html>
后记
jQuery的this使用注意: <onclick="goTo(this);"> // this需要传过去才能使用 // 无法直接在函数中使用,默认是全局对象Windows
jQuery on() 方法:
向 <p> 元素添加 click 事件处理程序: $(document).ready(function(){ $("p").on("click",function(){ alert("段落被点击了。"); }); }); 参照: <script> $(document).ready(function(){ $("#div1").on("click","p",function(){ $(this).css("background-color","pink"); }); $("#div2").delegate("p","click",function(){ $(this).css("background-color","pink"); }); }); </script>:
补充:
on() 方法在被选元素及子元素上添加一个或多个事件处理程序。
自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。该方法给 API 带来很多便利,我们推荐使用该方法,它简化了 jQuery 代码库。
注意:使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)。
提示:如需移除事件处理程序,请使用 off() 方法。
提示:如需添加只运行一次的事件然后移除,请使用 one() 方法。