web前端(七)——jquery高级

事件冒泡

  事件冒泡 :当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到window 。(注意这里传递的仅仅是事件 并不传递所绑定的事件函数。所以如果父级没有绑定事件函数,就算传递了事件 也不会有什么表现 但事件确实传递了。)

下面这段代码一共有四个事件都分别绑定了单击事件。

  在页面中当单击a标签会连续弹出4个提示框。这就是事件冒泡引起的现象。

  事件冒 泡的过程是:a --> p--> div-->window。a冒泡到div冒泡到body。

    <script>
        $(function () {
            var $box1 = $(‘.father‘);
            var $box2 = $(‘.son‘);
            var $box3 = $(‘.grandson‘);
            $box1.click(function () {
                alert(‘father‘);
            });
            $box2.click(function () {
                alert(‘son‘);
            });
            $box3.click(function (event) {
                alert(‘grandson‘);

            });
            $(document).click(function (event) {
                alert(‘grandfather‘);
            });
        })

    </script>
</head>
<body>
<div class="father">    <p class="son">        <a class="grandson">点我</a>    </p></div>

阻止事件冒泡

  事件冒泡机制有时候是不需要的,需要阻止掉,通过 return false;来阻止

<head>
    <script>
        $(function () {
            var $box1 = $(‘.father‘);
            var $box2 = $(‘.son‘);
            var $box3 = $(‘.grandson‘);
            $box1.click(function () {
                alert(‘father‘);
            });
            $box2.click(function () {
                alert(‘son‘);
            });

            $box3.click(function () {
                alert(‘grandson‘);
                return false;

            });
        })

    </script>
<body>

<div class="father">
    <p class="son">
        <a class="grandson">点我</a>
    </p>
</div>

事件委托

  事件委托又叫事件代理,就是利用冒泡的原理,把事件加到父级上.

  通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能

  其次可以让新加入的子元素也可以拥有相同的操作

$(function(){
    $list = $(‘#list‘);  //delegate(子元素,事件,函数)
    $list.delegate(‘li‘, ‘click‘, function() {
        $(this).css({background:‘red‘});
    });
})
...
<ul id="list">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>

何为事件委托

有三个同事预计会在周一收到快递。为签收快递,有两种办法:

  一是三个人在公司门口等快递;

  二是委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优势,那就是即使公司里来了新员工(不管多少),前台MM也会在收到寄给新员工的快递后核实并代为签收。

这里其实还有2层意思的:

  第一,现在委托前台的同事是可以代为签收的,即程序中的现有的dom节点是有事件的;

  第二,新员工也是可以被前台MM代为签收的,即程序中新添加的dom节点也是有事件的。

Dom操作

  元素节点操作指的是改变html的标签结构,它有两种情况:
    1、移动现有标签的位置
    2、将新创建的标签插入到现有的标签中

创建新标签

var $div = $(‘<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();

javascript对象

javascript中的对象,可以理解成是一个键值对的集合,键是调用每个值的名称,值可以是基本变量,还可以是函数和对象

创建javascript对象有两种方法

  一种是通过顶级Object类来实例化一个对象,然后在对象上面添加属性和方法:

var person = new Object();

// 添加属性:
person.name = ‘tom‘;
person.age = ‘25‘;

// 添加方法:
person.sayName = function(){
    alert(this.name);
}

// 调用属性和方法:
alert(person.age);
person.sayName();

//2,还可以通过对象直接量的方式创建对象
var person2 = {
    name:‘Rose‘,
    age: 18,
    sayName:function(){
        alert(‘My name is‘ + this.name);
    }
}

// 调用属性和方法:
alert(person2.age);
person2.sayName();

json

json是一种轻量级的数据交换格式。易于人阅读和编写。

json数据对象类似于JavaScript中的对象,但是它的键对应的值里面是没有函数方法的,值可以是普通变量,不支持undefined,值还可以是数组或者json对象

json对象的属性名称和字符串值需要用双引号引起来,用单引号或者不用引号会导致读取数据错误

json格式的数据

{
    "name":"tom",
    "age":18
}

json的另外一个数据格式是数组

["tom",18,"programmer"]
{
    "name":"jack",
    "age":29,
    "hobby":["reading","travel","photography"]
    "school":{
        "name":"Merrimack College",
        "location":‘North Andover, MA‘
    }
}

JSON 和 JS 对象互转

要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:

var json = JSON.stringify({a: ‘Hello‘, b: ‘World‘}); 

//结果是 ‘{"a": "Hello", "b": "World"}‘

要实现从 JSON 转换为对象,使用 JSON.parse() 方法:

var obj = JSON.parse(‘{"a": "Hello", "b": "World"}‘); 

//结果是 {a: ‘Hello‘, b: ‘World‘}

原文地址:https://www.cnblogs.com/sickle/p/10130549.html

时间: 2024-11-09 03:31:06

web前端(七)——jquery高级的相关文章

web前端之JavaScript高级程序设计六:事件

web前端之JavaScript高级程序设计六:事件 JavaScript 与 HTML 之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间.可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码.这种在传统软件工程中被称为观察员模式的模型,支持页面的行为(JavaScript 代码)与页面的外观(HTML 和 CSS 代码)之间的松散耦合. 事件流: 事件流描述的是从页面中接收事件的顺序.但有意思的是, IE 和 Netscape 开发团队居然提出了

Web前端开发(高级)下册-目录

多媒体与绘图 多媒体 音频格式 视频格式 HTML5多媒体支持 <audio>和<video> htmlaudioElement和htmlVideoElement <audio>和<video>的事件 html5的绘图支持 <canvas>元素 绘制图形 绘制几何图形 绘制路径 绘制字符串 清除绘制内容 绘制阴影 绘制位图 变形 svg HTML5中使用svg svg的基本语法 svg内部标签 几何图形标签 路径标签 文字标签 HTML5新特性

[热]全网最全的官方1+x证书web前端初级中级高级全课程分析及大纲

Web前端开发-职业技能等级标准1.pdf 更多尽在http://yueguang.online 原文地址:https://www.cnblogs.com/ali983/p/12578927.html

【Web前端】jQuery界面优化

随着互联网的发展,网站的前端界面会越来越重要,它关注的是用户的直接体验.市场上同类型的网站越来越多,一个比其他同类网站更流畅.优雅的界面能让用户摈弃你的竞争对手.所以,让自己的网站前端运行的更快.界面更优美成为了一个重要的话题.从而,前端界面优化技术也成为了优秀前端开发人员必备的技能,这是核心竞争力. 今天介绍的是jQuery这个流行的前端javascript开发框架里的一些优化技术,这些优化技术需要我们深入理解JavaScript以及Web浏览器中DOM与JavaScript引擎关系. 减少D

10个极客Web前端开发jquery资源大荟萃

1.基于TweenMax.js的网页幻灯片 今天给大家带来一款基于TweenMax.js的网页幻灯片.这款幻灯片以不规则的碎片百叶窗的形式切换.切换效果非常漂亮. 在线演示 源码下载 2.pagePiling.js - 创建漂亮的全屏滚动效果 全屏滚动效果是最近非常流行的网页设计形式,带给用户良好的视觉和交互体验.pagePiling.js 这款 jQuery 插件可以帮助前端开发人员轻松实现这种效果. 在线演示 源码下载 3.使用 CSS3 伪元素实现立体的照片堆叠效 CSS3 里引入的伪元素

10款web前端基于jquery超实用jQuery插件大合集

1.纯CSS3实现多种箭头绘制及动画 今天要介绍的这款CSS3应用也非常实用,利用它可以用纯CSS3实现各种箭头的绘制,包括左右箭头.上下箭头以及各个方向的转弯箭头,另外还有一款更酷的CSS3箭头动画特效,可以用来做Loading加载动画.这么多箭头,你可以任选一个应用到项目中去. 在线演示 源码下载 2.基于jquery的手风琴显示详情 今天要各网友分享一款基于jquery的手风琴显示详情实例.当单击顶部箭头的时候,该项以手风琴的形式展示显示详情. 在线演示 源码下载 3.纯CSS3实现眨眼动

10款web前端超实用jQuery插件大合集

1.HTML5截图功能 可拖拽图片 截图在我们平常电脑应用中非常的广泛,包括开发者和一般的使用用户.今天介绍的这款HTML5截图应用可以帮助你在上传头像前截取自己的头像,你只需要拖拽移动图片即可选中要截取的部分,HTML5会自动将选取的图片自动生成一张新的图片来保存,从而完成截图的功能.另外,该HTML5截图应用还支持按住shift键实现图片同比例缩放. 在线演示 源码下载 2.纯CSS3动画按钮效果 5种漂亮样式 这次我们要来分享一款很不错的CSS3按钮动画,这款CSS3按钮一共有5种动画方式

超炫酷web前端的jQuery/HTML5应用搜罗

作为前端开发者,我们肯定都使用过非常多的jQuery插件,毋庸置疑,jQuery非常流行,尤其是结合HTML5和CSS3以后,让这些jQuery插件有了更多地动画效果,更为绚丽多彩. 1.HTML5/CSS3一组可爱的3D按钮 这是一款利用HTML5和CSS3制作而成的按钮组合,这款CSS按钮非常具有个性化.该CSS3按钮不仅具有3D的外观,点击按钮也具有非常立体的效果,更具有特点的是这款CSS3按钮的形状是不规则的,而且按钮中都有一个可爱的小图标. 在线演示 源码下载 2.jQuery Doc

10个web前端基于jQuery动画插件及源码

1.超赞的页面加载进度自动指示和 Ajax 导航效果 在页面中引入 Pace.js 和您所选择主题的 CSS 文件,就可以让你的页面拥有漂亮的加载进度和 Ajax 导航效果.不需要挂接到任何代码,自动检测进展.您可以选择颜色和多种效果,有简约,闪光灯,MAC OSX,左侧填充,顶部填充,计数器和弹跳等等. 在线演示 源码下载 2.ProgressBar.js – 漂亮的响应式 SVG 进度条 ProgressBar.js 是一个借助动态 SVG 路径的漂亮的,响应式的进度条效果.使用 Progr