jQuery入门到放弃(一)

初识jQuery

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互

总结来说为下面三点:

  • jQuery 是一个 JavaScript
  • jQuery 极大地简化了 JavaScript 编程
  • jQuery 很容易学习

使用jQuery编写HelloWorld

  • 下载jQuery库
  • 引入jQuery
<head>
    <meta charset="UTF-8">
    <title>01-初识jQuery</title>
    <script src="js/jquery-1.11.3/jquery.js"></script>
</head>
  • 编写helloWorld
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>02-jQuery-HelloWorld</title>
    <script src="js/jquery-1.11.3/jquery.js"></script>
    <script>
        // 原生js的固定写法
        window.onload = function(ev) {
        };

        // jQuery的固定写法
        $(document).ready(function () {
            alert("Hello World");
        });
    </script>
</head>
<body>
</body>
</html>

jQuery和js入口函数的区别

    <script>
        window.onload = function (ev) {
            // 通过原生的js入口函数可以拿到Dom元素
            var img = document.getElementsByTagName("img")[0];
            console.log(img);
            // 通过原生的js入口函数可以拿到dom元素的宽高
            var width = window.getComputedStyle(img).width;
            console.log(width);
        };

        $(document).ready(function () {
            // 通过jQuery入口函数可以拿到Dom元素
            var $img = $("img")[0];
            console.log($img);
            // 通过jQuery入口函数不能拿到dom元素的宽高
            var $width = $img.width();
            console.log($width);
        });
    </script>

区别:

  • 原生jQuery入口函数的加载模式不同
  • 原生js会等到dom加载完毕,并且图片也加载完毕才会执行
  • jQuery会等到dom加载完毕,但不会等到图片也加载完毕就会执行
    <script>
        window.onload = function (ev) {
            alert("hello cuzz"); // 不会显示
        };
        window.onload = function (ev) {
            alert("hello cuxx"); // 会显示
        };
    </script>
    <script>
        $(document).ready(function () {
            alert("hello cuzz"); // 会显示
        });
        $(document).ready(function () {
            alert("hello cuxx"); // 会显示
        });
    </script>

区别:

  • 多个window.onload只会执行一次, 后面的会覆盖前面的
  • 多个$(document).ready()会执行多次,后面的不会覆盖前面的

原因:
jQuery框架本质是一个闭包,每次执行我们都会给ready函数传递一个新的函数,不同函数内部的数据不会相互干扰

<script>
        // 相当于这样写
        var test1 = function () {
            alert("hello cuzz");
        }
        var test2 = function () {
            alert("hello cuxx");
        }
        $(document).ready(test1);
        $(document).ready(test2);
</script>

对比:

window.onload $(document).ready()
执行时机 必须等待网页全部加载完毕(包括 图片等),然后再执行包裹代码 只需要等待网页中的DOM结构 加载完毕,就能执行包裹的代码
执行次数 只能执行一次,如果第二次,那么 第一次的执行会被覆盖 可以执行多次,第N次都不会被上 一次覆盖
简写方案 $(function () { });

jQuery的四种写法

    <script>
        // 第一种写法
        $(document).ready(function () {
           alert("hello cuzz");
        });
        // 第二种写法
        jQuery(document).ready(function () {
            alert("hello cuzz");
        });
        // 第三种写法
        $(function () {
            alert("hello cuzz");
        });
        // 第四种写法
        jQuery(function () {
            alert("hello cuzz");
        });
    </script>

推荐使用第三种写法

jQuery的核心函数

  • jQuery(callback),当dom加载完成之后执行传入的回调函数
    <script>
        $(function () {
           alert("123"); 
        });
    </script>
  • jQuery([sel,[context]]),接收一个包含 CSS 选择器的字符串,然后用这个字符串去匹配一组元素,并包装成jQuery对象
    <script>
        $(function () {
            // 利用jQuery获取的div,得到的是一个jQuery对象
            var $box = $("div");
            console.log($box);
            
            // 利用原生js语法获取的div,得到的是一个js对象
            var box = document.getElementsByTagName("div");
            console.log(box);
        });
    </script>
  • 原生JS对象和jQuery对象相互转换
  • jQuery(html, [ownerDoc]) 根据 HTML 标记字符串,动态创建DOM 元素
    <script>
        $(function () {
            var $eles = $("<p>我是span</p><u>我是u</u>");
            // 无论是jQuery找到的还是创建的,我们最终拿到的永远都是jQuery对象
            console.log($eles);
            // 将创建好的DOM元素添加到body中
            $("body").append($eles);
        });
    </script>

jQuery的本质是一个伪数组,有0到length-1的属性

jQuery静态方法

  • 静态方法
    <script>
        // 定义一个类
        function AClass() {
        };

        // 给这个类添加一个静态方法
        AClass.staticMethod = function () {
            alert("staticMethod")
        };

        // 静态方法的调用
        AClass.staticMethod();
    </script>
  • 实例方法
    <script>
        // 定义一个类
        function AClass() {
        }

        // 给这个类添加一个实例方法
        AClass.prototype.instanceMethod = function () {
            alert("instanceMethod");
        }

        // 实例方法的调用
        var a = new AClass();
        a.instanceMethod();

    </script>

常用静态方法

  • $.each(object, [callback])
$(function () {
    // 遍历数组
    var arr = [1, 3, 5, 7, 9];
    // 通过原生方法遍历数组
    // 第一个回调函数参数是遍历到的元素
    // 第二个回调函数参数是当前遍历的索引
    // 返回值: 没有返回值
    var res = arr.forEach(function (ele, idx) {
        console.log(idx, ele);
    });
    console.log(res);

    // 通过jQuery静态方法遍历数组
    // 第一个回调函数参数是当前遍历的索引
    // 第二个回调函数参数是遍历到的元素
    // 返回值: 被遍历的数组
    var $res2 = $.each(arr, function (idx, ele) {
        console.log(idx, ele);
    });
    console.log($res2);

    // 遍历对象
    var obj = {name: "", age:"33", gender:"male"};
    // js对象没有forEach方法,所以通过forin方法遍历对象
    for(var key in obj){
        console.log(key, obj[key]);
    }
    // 通过jQuery静态方法遍历对象
    $.each(obj,function (key, value) {
        console.log(key, value);
    });
});
  • $.holdReady(hold),传入true或false来暂停或则恢复ready()事件
  • $.trim(str) 去掉字符串起始和结尾的空格
  • $.isArray(obj) 判断是否是数组
  • $.isFunction(obj)判断是否是函数
  • $.isWindow(obj)判断是否是window对象

学习网站

在网上,发现菜鸟教程比较详细,排版也比较好,不再更新jQuery

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

推荐阅读更多精彩内容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,104评论 1 45
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 8,620评论 0 3
  • 我的姐姐双鱼座,注定玻璃心!今天早上在慢慢说上看到双鱼座女生的怪癖。上面是这样写得矫情做作,怀揣着一颗玻璃心,没碰...
    28a0a35b01b7阅读 695评论 0 0
  • 我不是冷血的动物, 我也要爱的暖窝。 我也需要一个幸福温暖的家。 有爸爸疼,有妈妈爱; 是一个美好的家庭。 但是总...
    白钢琴的梦想阅读 178评论 0 0
  • 1.英语单词 2.嵌入式lcd,spi学习。
    i噼里啪啦i阅读 158评论 0 0