jquery--事件委托/jquery元素节点操作/实例-todolist
事件委托
事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。
一般绑定事件的写法
$(function(){
$ali = $('#list li');
$ali.click(function(event) {
$(this).css({background:'red'});
});
})
...
<ul id="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
事件委托的写法
$(function(){
$list = $('#list');
$list.delegate('li', 'click', function(event) {
$(this).css({background:'red'});
});
})
...
<ul id="list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
取消事件委托
// ev.delegateTarge 委托对象 $(ev.delegateTarge).undelegate(); // 上面的例子可使用 $list.undelegate();
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" 6 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>事件委托</title> <!--事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。--> 9 10 <style type="text/css"> 11 .list{ 12 list-style:none; 13 } 14 15 .list li{ 16 height:30px; 17 background-color:green; 18 margin-bottom:10px; 19 color:#fff; 20 } 21 22 </style> 23 24 <script type="text/javascript" src="../js/jquery-1.12.4.min.js"></script> 25 <script type="text/javascript"> 26 $(function(){ 27 /* 28 $('.list li').click(function(){ 29 alert($(this).html()) 30 }) 31 */ 32 33 //事件委托的写法 34 $('.list').delegate('li','click',function(){ 35 alert($(this).html()); 36 37 //取消委托 38 $('.list').undelegate(); 39 }) 40 }) 41 </script> 42 </head> 43 <body> 44 45 <ul class="list"> 46 <li>1</li> 47 <li>2</li> 48 <li>3</li> 49 <li>4</li> 50 <li>5</li> 51 <li>6</li> 52 <li>7</li> 53 <li>8</li> 54 </ul> 55 56 </body> 57 </html>
jquery元素节点操作
创建节点
var $div = $('<div>');
var $div2 = $('<div>这是一个div元素</div>');
插入节点
1、append()和appendTo():在现存元素的内部,从后面插入元素
var $span = $('<span>这是一个span元素</span>');
$('#div1').append($span);
......
<div id="div1"></div>
2、prepend()和prependTo():在现存元素的内部,从前面插入元素
3、after()和insertAfter():在现存元素的外部,从后面插入元素
4、before()和insertBefore():在现存元素的外部,从前面插入元素
删除节点
$('#div1').remove();
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" 6 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>节点操作</title> 9 10 <script type="text/javascript" src="../js/jquery-1.12.4.min.js"></script> 11 <script type="text/javascript"> 12 $(function(){ 13 var $span=$('<span>这是一个span</span>') 14 var $p=$('<p>这是一个p元素</p>') 15 var $h=$('<h1>页面标题</h1>') 16 var $div2=$('<div>这是一个div2</div>') 17 18 /* append()和appendTo():在现存元素的内部,从后面插入元素 19 $('#div1').append($span); 20 $('#div1').append($p); 21 */ 22 23 $span.appendTo('#div1'); 24 $p.appendTo('#div1') 25 26 //before()和insertBefore():在现存元素的外部,从前面插入元素 27 //$('#div1').before($h); 28 $h.insertBefore('#div1'); 29 30 //after()和insertAfter():在现存元素的外部,从后面插入元素 31 //$('#div1').after($div2); 32 $div2.insertAfter('#div1'); 33 34 //删除节点 35 $p.remove() 36 37 }) 38 </script> 39 </head> 40 <body> 41 <div id="div1"></div> 42 </body> 43 </html>

1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" 6 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>节点操作和html函数的区别</title> 9 10 <script type="text/javascript" src="../js/jquery-1.12.4.min.js"></script> 11 <script type="text/javascript"> 12 $(function(){ 13 14 // html 操作比节点操作的性能高,建议能用html的地方就用html方法 15 //$('#div1').html('<a href="">链接</a>') //会将原来的p标签覆盖掉 16 $('#div1').append('<a href="">链接</a>') //在原来的p标签后面追加了a 17 }) 18 </script> 19 </head> 20 <body> 21 22 <div id="div1"> 23 <p>这是一个p元素</p> 24 </div> 25 26 </body> 27 </html>
1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" 6 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>已有元素的移动</title> 9 10 <script type="text/javascript" src="../js/jquery-1.12.4.min.js"></script> 11 <script type="text/javascript"> 12 $(function(){ 13 14 $('.p1').insertBefore('.div1'); 15 16 $('<h3>h3标题</h3>').insertBefore('.p1'); 17 18 }); 19 </script> 20 </head> 21 <body> 22 23 <div class="div1">这是一个div元素</div> 24 <p class="p1">这是一个p元素</p> 25 26 </body> 27 </html>

1 <!doctype html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" 6 content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>判读jquery选择器是否选择成功</title> 9 10 <script type="text/javascript" src="../js/jquery-1.12.4.min.js"></script> 11 <script type="text/javascript"> 12 $(function(){ 13 14 // 用length(>0)属性来判断是否选中了元素 15 alert($('#div1').length); 16 alert($('#span').length); 17 18 }); 19 </script> 20 </head> 21 <body> 22 23 <div id="div1">这是一个div元素</div> 24 25 </body> 26 </html>
事件委托--todolist
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>事件委托--todolist</title> 6 <style type="text/css"> 7 .list_con{ 8 width:400px; 9 margin:50px auto 0; 10 } 11 12 .inputtxt{ 13 width:350px; 14 height:30px; 15 border:1px solid #ccc; 16 padding:0px; 17 text-indent:10px; 18 19 } 20 21 .inputbtn{ 22 width:40px; 23 height:32px; 24 padding:0px; 25 border:1px solid #ccc; 26 } 27 28 .list{ 29 margin:0; 30 padding:0; 31 list-style:none; 32 margin-top:20px; 33 } 34 35 .list li{ 36 height:30px; 37 line-height:30px; 38 border-bottom:1px solid #ccc; 39 } 40 41 .list li span{ 42 float:left; 43 } 44 45 .list li a{ 46 float:right; 47 text-decoration:none; 48 margin:0 10px; 49 } 50 </style> 51 <script type="text/javascript" src="../js/jquery-1.12.4.min.js"></script> 52 <script type="text/javascript"> 53 $(function(){ 54 $('#btn1').click(function(){ 55 var txt=$('#txt1').val(); //获取#txt1输入框的值 56 $('#txt1').val(''); 57 58 if(txt==''){ 59 alert('请输入内容'); 60 return; //停止该函数继续 61 } 62 63 $li=$('<li><span>'+txt+'</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a href="javascript:;" class="del">删除</a></li>') 64 $li.appendTo('#list') 65 }) 66 67 /* 68 $('.del').click(function(){ 69 $(this).parent().remove(); 70 }) 71 */ 72 73 $('#list').delegate('a','click',function(){ 74 var handler=$(this).attr('class'); //获取点击该元素的class 75 76 if(handler=='del'){ 77 $(this).parent().remove(); 78 } 79 if(handler=='up'){ 80 if($(this).parent().prev().length==0){ //用length方法判断当前点击元素的父元素,即li前面还有没有li标签 81 alert('到顶了!'); 82 return; 83 } 84 $(this).parent().insertBefore($(this).parent().prev()); //将li挪到上一个li的前面 85 } 86 87 if(handler=='down'){ 88 if($(this).parent().next().length==0){ 89 alert('到底了!'); 90 } 91 $(this).parent().insertAfter($(this).parent().next()) //将li挪到下一个li的后面 92 } 93 }) 94 }) 95 96 </script> 97 </head> 98 <body> 99 100 <div class="list_con"> 101 <h2>To do list</h2> 102 <input type="text" name="" id="txt1" class="inputtxt"> 103 <input type="button" name="" value="增加" id="btn1" class="inputbtn"> 104 105 <ul id="list" class="list"> 106 107 <li><span>学习html</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a href="javascript:;" class="del">删除</a></li> 108 <li><span>学习css</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a href="javascript:;" class="del">删除</a></li> 109 <li><span>学习javascript</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a href="javascript:;" class="del">删除</a></li> 110 111 </ul> 112 113 </div> 114 </body> 115 </html>

posted on 2019-12-25 23:20 cherry_ning 阅读(153) 评论(0) 收藏 举报
浙公网安备 33010602011771号