设为首页 加入收藏

TOP

[js高手之路]设计模式系列课程-委托模式实战微博发布功能(二)
2017-10-10 14:50:12 】 浏览:10016
Tags:高手 设计模式 系列 课程 委托 模式 实战 发布 功能
li> 5 </ul> 6 <script> 7 var oBtn = document.getElementsByTagName( "input" )[0]; 8 var oUl = document.getElementsByTagName( "ul" )[0]; 9 var aLi = document.getElementsByTagName( "li" ); 10 oBtn.onclick = function(){ 11 var oLi = document.createElement( "li" ); 12 oLi.innerHTML = 'ghostwu'; 13 oUl.appendChild( oLi ); 14 } 15 for( var i = 0, len = aLi.length; i < len; i++ ){ 16 aLi[i].onmouseover = function(){ 17 this.style.backgroundColor = 'red'; 18 } 19 aLi[i].onmouseout = function(){ 20 this.style.backgroundColor = ''; 21 } 22 } 23 24 </script>

新创建的li元素,是不能绑定到onmouseover和onmouseout事件的,我们采用委托模式之后,可以这么做

 1     <input type="button" value="创建">
 2     <ul>
 3         <li>ghostwu1</li>
 4         <li>ghostwu2</li>
 5     </ul>
 6     <script>
 7         var oBtn = document.getElementsByTagName("input")[0];
 8         var oUl = document.getElementsByTagName("ul")[0];
 9         var aLi = document.getElementsByTagName("li");
10         oBtn.onclick = function () {
11             var oLi = document.createElement("li");
12             oLi.innerHTML = 'ghostwu';
13             oUl.appendChild(oLi);
14         }
15         oUl.onmouseover = function( ev ){
16             var oEvent = ev || event;
17             var target = oEvent.target || oEvent.srcElement;
18             if ( target.tagName.toLowerCase() == 'li' ) {
19                 target.style.backgroundColor = 'red';
20             }
21         }
22         oUl.onmouseout = function( ev ){
23             var oEvent = ev || event;
24             var target = oEvent.target || oEvent.srcElement;
25             if ( target.tagName.toLowerCase() == 'li' ) {
26                 target.style.backgroundColor = '';
27             }
28         }
29     </script>

至此,我们解决了第二个问题:当动态创建dom时,如果给动态创建的dom绑定上事件和相应的特效

最后,我们结合委托模式,来实战一个微博发布的功能,微博发布之后,给动态创建的dom元素添加手风琴折叠功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link href="https://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-offset-3 col-md-6">
                <form class="form-horizontal">
                    <div class="form-group">
                        <input id="title" type="text" class="form-control" placeholder="请输入标题">
                    </div>
                    <div class="form-group">
                        <textarea name="" id="txt" cols="30" rows="5" class="form-control"></textarea>
                    </div>
                    <div class="form-group">
                        <input type="button" value="发布" class="btn btn-primary" id="btn-publish">
                    </div>
                </form>
            </div>
            <div class="col-md-offset-3 col-md-6" id="content">
            </div>
        </div>
    </div>
</body>
<script>
    var oBtnPublish = document.getElementById("btn-publish");
    var aTpl = [
        '<div class="panel panel
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[js高手之路] 我的开源javascript.. 下一篇jacascript DOM变动事件

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目