事件委托节点操作

(1)事件委托

<!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(){
        /*
        给每个li绑定事件,一共绑定了8次,性能不高
        $('.list li').click(function() {
            alert($(this).html());
        });
        */
        /*
        事件委托:方法delegate,只绑定一次事件,冒泡触发
            参数:
                selector选择器:写入ul下面的所有要发生事件的元素,多个元素用空格隔开,例如‘li a span’
                eventType事件
                function要执行的操作
        
        $('.list').delegate('li', 'click', function() {
            //$(this)指发生事件的子集,即每个li
            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>

(2)节点操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>节点操作</title>
    <style type="text/css">
    
</style>
<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>');
        /*插入子元素*/
        //div中插入span和p(末尾追加)
        // $('#div1').append($span);
        // $('#div1').append($p);
        // 把span和p插入div中
        $span.appendTo('#div1');
        $p.appendTo('#div1');
        //把子元素插入到父元素(前面追加)
        // prepend()
        // prependTo()
        //在div前边插入兄弟h1标题
        // $('#div1').before($h);
        $h.insertBefore('#div1');
        //在后边插入兄弟元素
        //after()
        //insertAfter()
        //删除p标签
        $p.remove();    
    })
</script>
</head>
<body>
    <div id="div1"></div>
</body>
</html>

(3)ajax

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
     <title>ajax</title>
    <style type="text/css">
    
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
    $.ajax({
        url: 'data.json',//请求的服务器路径,实际开发中写文档接口的路径
        type: 'get',//分get/post请求
        dataType: 'json',//要读取什么格式的数据,xml script html upload
        // data:{page:1}//请求时要携带的参数
    })
    .done(function(data){//成功的时候会执行的函数
        alert(data.name);
        console.log(data);
    })
    .fail(function(){//失败的时候
        console.log("error");
    })
    /*.always(function(){//不论成功与否都会执行
        console.log("always");
    })*/;
</script>
</head>
<body>

</body>
</html>

(4)jsonp

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jsonp</title>
    <style type="text/css">
    
</style>
<!-- <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script> -->
<script type="text/javascript">
    // alert($);//function(a,b){return new n.fn.init(a,b)}
    /*
    jsonp可以跨域请求数据的原理:
        主要是利用了script标签可以跨域链接资源的特性
    */
    function aa(dat){
        alert(dat.name);
    }
</script>
<script type="text/javascript" src="js/data.js"></script>
</head>
<body>

</body>
</html>

(5)jQuery-jsonp

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery-jsonp</title>
    <style type="text/css">
    
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
    $.ajax({
        url: 'http://localhost:8080/1803/js/data.js',//跨域请求的地址,也可用相对路径js/data.js
        type: 'get',
        dataType: 'jsonp',//使用jsonp跨域请求
        jsonpCallback:'aa'
    })
    .done(function(data) {
        alert(data.name);
    })
    .fail(function() {
        console.log("error");
    });
</script>
</head>
<body>

</body>
</html>

(6)jsonp公开接口

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jsonp公开接口</title>
    <style type="text/css">
    
</style>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript">
    //360搜索的公开接口
    //https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=s
    $(function(){
        $('#txt01').keyup(function(){
            var val = $(this).val();
            $.ajax({
                url: 'https://sug.so.360.cn/suggest?',//请求360搜索的公开接口
                type: 'get',
                dataType: 'jsonp',//跨域请求
                data: {word: val}//携带参数
            })
            .done(function(data) {
                console.log(data);
                // alert(data.s.length);//10条数据
                $('.list').empty();//先清空列表
                //模拟搜索联想,循环插入新列表
                for(var i=0; i<data.s.length; i++){
                    var $li = $('<li>'+data.s[i]+'</li>');
                    $li.prependTo('.list');
                }
            })
            .fail(function() {
                console.log("error");
            });
        })
    })
    
</script>
</head>
<body>
    <input type="text" id="txt01">
<ul class="list"></ul>
</body>
</html>

(7)

/*
NodeJS Static Http Server - http://github.com/thedigitalself/node-static-http-server/
By James Wanga - The Digital Self
Licensed under a Creative Commons Attribution 3.0 Unported License.
A simple, nodeJS, http development server that trivializes serving static files.
This server is HEAVILY based on work done by Ryan Florence(https://github.com/rpflorence) (https://gist.github.com/701407). I merged this code with suggestions on handling varied MIME types found at Stackoverflow (http://stackoverflow.com/questions/7268033/basic-static-file-server-in-nodejs).
To run the server simply place the server.js file in the root of your web application and issue the command
$ node server.js
or
$ node server.js 1234
with "1234" being a custom port number"
Your web application will be served at http://localhost:8888 by default or http://localhost:1234 with "1234" being the custom port you passed.
Mime Types:
You can add to the mimeTypes has to serve more file types.
Virtual Directories:
Add to the virtualDirectories hash if you have resources that are not children of the root directory
*/
var http = require("http"),
url = require("url"),
path = require("path"),
fs = require("fs")
port = process.argv[2] || 8888;

var mimeTypes = {
"htm": "text/html",
"html": "text/html",
"jpeg": "image/jpeg",
"jpg": "image/jpeg",
"png": "image/png",
"gif": "image/gif",
"js": "text/javascript",
"css": "text/css",
"json":"text/json",
"eot":"application/vnd.ms-fontobject",
"svg":"image/svg+xml",
"ttf":"application/octet-stream",
"woff":"application/font-woff",
"woff2":"application/font-woff"
};

var virtualDirectories = {
//"images": "../images/"
};

http.createServer(function(request, response) {

var uri = url.parse(request.url).pathname
, filename = path.join(process.cwd(), uri)
, root = uri.split("/")[1]
, virtualDirectory;

virtualDirectory = virtualDirectories[root];
if(virtualDirectory){
uri = uri.slice(root.length + 1, uri.length);
filename = path.join(virtualDirectory ,uri);
}

fs.exists(filename, function(exists) {
if(!exists) {
response.writeHead(404, {"Content-Type": "text/plain"});
response.write("404 Not Found\n");
response.end();
console.error('404: ' + filename);
return;
}

if (fs.statSync(filename).isDirectory()) filename += '/index.html';

fs.readFile(filename, "binary", function(err, file) {
  if(err) {        
    response.writeHead(500, {"Content-Type": "text/plain"});
    response.write(err + "\n");
    response.end();
    console.error('500: ' + filename);
    return;
  }

  var mimeType = mimeTypes[path.extname(filename).split(".")[1]];
  response.writeHead(200, {"Content-Type": mimeType});
  response.write(file, "binary");
  response.end();
  console.log('200: ' + filename + ' as ' + mimeType);
});

});
}).listen(parseInt(port, 10));

console.log("Static file server running at\n => http://localhost:" + port + "/\nCTRL + C to shutdown");

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,517评论 18 139
  • =========================================================...
    lavor阅读 3,479评论 0 5
  • =========================================================...
    _灯火阑珊处阅读 2,391评论 0 3
  • 文/苏门映雪 ~1~ 近日好友乔迁新居,我们一大帮子朋友蜂拥而至前去道贺,俗称“燎锅底”。 到了之后先参观他们的新...
    苏门映雪阅读 2,503评论 14 16
  • 迎着春风,漫步在小区,穿梭在花的世界,心情荡漾,不自觉地拿起手机记录下这春的美好! 看,有娇美花朵的陪衬,我的衣服...
    海上日出2025阅读 465评论 1 1