• 事件委托,元素节点操作,todolist计划列表实例


    一. 事件委托

    事件委托就是利用冒泡的原理,把事件加到父级上,来代替子集执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。

    比如有20个<li>,并且在每个li中都绑定事件的话很麻烦,可以把事件绑定在li的父级<ul>上

    例子1,实现效果是点击每一个li,弹出相应的文本内容,就是1,2,3...8

    方法一:对每一个li都绑定事件,但这样性能不高

    $('.list li').click(function(){
        alert($(this).html());
    })
     
    方法二:用事件委托的方式
     
    $('.list').delegate('selector', 'eventType', function(event) {
        selector
    });
     
     
    完成代码如下
     
    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>事件委托</title>
    	<style type="text/css">
    		.list{
    			list-style:none;
    		}
    
    		.list li{
    			height:30px;
    			background-color:green;
    			margin-bottom:10px;
    			color:#fff;
    		}
    
    	</style>
    	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
    	<script type="text/javascript">
    		$(function(){
    
    			/*$('.list li').click(function(){ 
    				alert($(this).html());
    			})
    			*/
               /*  事件委托的写法 */
    
    			$('.list').delegate('li', 'click', function() { //li是ul下的所有元素,如果有多个元素可用空格分开;click是事件类型,
    				alert($(this).html());
    
    				//取消委托
    				//$('.list').undelegate();
    
    			});
    
    
    
    		})
    
    	</script>
    </head>
    <body>
    	<ul class="list">
    		<li>1</li>
    		<li>2</li>
    		<li>3</li>
    		<li>4</li>
    		<li>5</li>
    		<li>6</li>
    		<li>7</li>
    		<li>8</li>
    	</ul>
    </body>
    </html>
    

      

    二. 节点操作

    1. 创建节点

    $('<span>span元素</span>

    这样就创建了一个节点,可把它赋给一个变量。

    2. 插入节点,

    append()就是正常的在后面附加节点元素;而appendTo()是把附加元素和被附加元素反着写

    prepend()和prependTo():在现存元素内部,从前面插入元素节点

    after()和insertAfter():从现存元素的外部,从后面插入元素

    before()和insertBefore():从现存元素的外部,从前面插入元素;insertBefore() 比较好理解,2个效果一样

    3. 删除节点元素

    $('#div1').remove();

     代码实例如下

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>节点操作</title>
    	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
    	<script type="text/javascript">
    		$(function(){
    
    			var $span = $('<span>span元素</span>');
    			var $p = $('<p>p段落元素</p>');
    
    			var $h = $('<h1>页面标题</h1>');
    
    			/*
    
    			$('#div1').append($span);
    			$('#div1').append($p);
    
    			*/
    
    		    $span.appendTo('#div1');
    		    $p.appendTo('#div1');
    
    
    		    //$('#div1').before($h);  效果就是<h1>放在了<div1>的前面
    
    		    $h.insertBefore('#div1');
    
    
    		    $p.remove();
    
    
    
    
    		})
    	</script>
    </head>
    <body>
    	<div id="div1"></div>
    </body>
    </html>
    

      

    三. todolist计划列表实例

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>todolist</title>
    	<style type="text/css">
    		.list_con{
    			400px;
    			margin:50px auto 0;
    		}
    
    		.inputtxt{
    			350px;
    			height:30px;
    			border:1px solid #ccc;
    			padding:0px;
    			text-indent:10px;
    			
    		}
    
    		.inputbtn{
    			40px;
    			height:32px;
    			padding:0px;
    			border:1px solid #ccc;
    		}
    
    		.list{
    			margin:0;
    			padding:0;
    			list-style:none;
    			margin-top:20px;
    		}
    
    		.list li{
    			height:30px;
    			line-height:30px;
    			border-bottom:1px solid #ccc;
    		}
    
    		.list li span{
    			float:left;
    		}
    
    		.list li a{
    			float:right;
    			text-decoration:none;
    			margin:0 10px;
    		}
    	</style>
    	<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
    	<script type="text/javascript">
    		$(function(){
    
    			$('#btn1').click(function(){
    
    				var txt = $('#txt1').val();
    				$('#txt1').val('');
    
    				if(txt==''){
    					alert('请输入内容!');
    					return;
    				}
    
    
    				$li = $('<li><span>'+ txt +'</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a href="javascript:;" class="del">删除</a></li>');
    
    				$li.appendTo('#list');
    
    			});
    
    
    
    			/*
    
    			$('.del').click(function() {
    				$(this).parent().remove();
    			});
    
    			*/
    
    
    			$('#list').delegate('a', 'click', function() {
    
    				var handler = $(this).attr('class');
    
    				if(handler=='del'){
    					$(this).parent().remove();
    				}
    
    				if(handler=='up'){
    
    					if($(this).parent().prev().length==0)
    					{
    						alert('到顶了!');
    						return;
    					}
    
    					$(this).parent().insertBefore($(this).parent().prev());				
    				}
    
    				if(handler=='down'){
    
    					if($(this).parent().next().length==0)
    					{
    						alert('到底了!');
    						return;
    					}
    
    					$(this).parent().insertAfter($(this).parent().next());				
    				}
    
    
    			});
    
    
    
    		})
    
    	</script>	
    </head>
    <body>
    
    	<div class="list_con">
    	<h2>To do list</h2>
    		<input type="text" name="" id="txt1" class="inputtxt">
    		<input type="button" name="" value="增加" id="btn1" class="inputbtn">
    		
    		<ul id="list" class="list">
    
    			<li><span>学习html</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a href="javascript:;" class="del">删除</a></li>
    			<li><span>学习css</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a href="javascript:;" class="del">删除</a></li>
    			<li><span>学习javascript</span><a href="javascript:;" class="up"> ↑ </a><a href="javascript:;" class="down"> ↓ </a><a href="javascript:;" class="del">删除</a></li>
    
    		</ul>
    
    	</div>
    </body>
    </html>
    

      

  • 相关阅读:
    总结下目前维护团队中用到的一些技术和工具
    一次修改时间导致的ORACLE 实例崩溃
    ruby 用watir 登录 CU的代码
    最近好烦.真的好烦
    Lucene.Net学习
    项目上线了,心情好爽
    轻松掌握XMLHttpRequest对象[转]
    微软发布3款SQL Injection攻击检测工具
    Domino开发
    用在JavaScript的RequestHelper [转]
  • 原文地址:https://www.cnblogs.com/regit/p/9007913.html
Copyright © 2020-2023  润新知