1. 替换/克隆:

克隆: var $newImg=$img.clone()

2. 事件:

标准:

1. 普通绑定: $().on("事件名",function(){ ... })

.addEventListener(...);

解绑: $().off("事件名",原函数对象)

2. 利用冒泡:

$parent.on("事件名","判断条件选择器",function(){

this->e.target

})

2个好处:
1. 自动使用"判断条件选择器"先筛选符合条件的元素再进入函数执行——不用自己写if判断

2. 将this->e.target,不用自己写e和e.target了

21种常见事件提供了简写: $().事件名(处理函数)

页面加载后执行:

1. 仅DOM内容加载后就提前执行: DOMContentLoaded

仅等待DOM内容: HTML和JS

可执行: 事件绑定,添加/删除/遍历/修改元素的内容

不能执行: 获取/修改CSS, 获取图片大小

如何: $(document).ready(function(){ ... })

$().ready(function(){ ... })

$(function(){ ... })

总结: 几乎所有jQuery代码都要放在$(function(){...})中

2. 所有页面内容加载完成后,才执行: window.onload

等待所有网页内容: HTML,CSS,JS,图片

都可执行

如何: $(window).load(function(){ ... })

总结: 只有依赖CSS和图片的代码才放在$(window).load()

鼠标事件:

mouseover  mouseout的问题:

频繁进出子元素,也会冒泡触发父元素上的鼠标事件

jQuery改为用mouseenter和mouseleave代替

优点: 即使频繁进出子元素,也不会冒泡触发父元素上的鼠标事件。

如果同时绑定了mouseenter和mouseleave,其实只需要绑定一个hover就可以:

$().hover(//mouseenter+mouseleave

function(){ ... },//给mouseenter

function(){ ... } //给mouseleave

)

如果两个处理函数刚巧可以合并为一个处理函数,其实只写一个处理函数也行

模拟触发: 没有单击到按钮,也能执行按钮的处理函数,而不用将代码写2遍

$(btn).trigger("事件名")  $(btn).trigger("click")

其实可简写为:$(btn).click()

3. 动画:

1. 简单动画: 写死的三种固定动画效果:

1. 显示隐藏: .show()   .hide()    .toggle()

不带参数,默认使用display:block/none控制显示隐藏,瞬间变化,没有动画效果

给一个持续时间参数: .show(ms)  .hide(ms)  .toggle(ms)

2. 上滑下滑: .slideUp(ms)   .slideDown(ms)  .slideToggle()

3. 淡入淡出: .fadeIn(ms)   .fadeOut(ms)   .fadeToggle()

问题1: 用js代码写死的效果,不可维护

问题2: 用js定时器实现的动画效果,效率不如css动画

2. 万能动画: 可对任意css属性实施动画效果

$().animate({

css属性:目标值,

... : ...

},持续ms)

强调: 只支持单个数值的属性

不支持:不是数值的属性

不支持颜色渐变——不如transition

排队和并发:

排队: 多个css属性先后依次变化

并发: 多个css属性同时变化

放在一个animate函数内的多个css属性是并发变化

停止动画: $().stop();

问题: 默认只能停止队列中正在播放的一个动画,后续动画依然会执行

解决: $().stop(true) 停止当前动画并清空队列

选择器:  :animated 选择和判断正在播放动画的元素

动画播放后执行:

每个动画API都有最后一个参数——回调函数

回调函数会在动画播放后自动调用执行

总结: 首选CSS: 效率高,可维护

和交互有关的动画,只能用JS定时器/JQUERY

和动态添加/删除DOM元素有关的动画,也必须用JS定时器/jQuery

4. 类数组操作:

2个API:

1. 遍历:

//实例方法

$()->jQuery()->new jQuery()

$().each(function(i,elem){ //forEach(function(elem,i,arr))

//i 获得当前位置

//elem 获得当前元素对象

})

//静态方法

//$->jQuery

$.each(类数组对象/数组,function(i,elem){

})

2. 查找:

$("所有元素").index("要找的元素")

在"所有元素"的jQuery对象中,查找"要找的元素"的位置

如果在同一个父元素下找子元素的位置:

$(要找的子元素).index()

5. 添加自定义API:

其实就是在jQuery的原型对象中添加自定义函数:

jQuery.fn=jQuery.prototype

定义新函数:

jQuery.fn.新函数=function(){

}

调用新函数:

$(...).新函数()

jQuery的替换/克隆的更多相关文章

  1. jQuery实现节点克隆、替换和互换

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. 节点操作-创建并添加&删除节点&替换&克隆节点

    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...

  3. JQuery replace 替换全部

    天在做写个程序时遇到需要替换的功能,可是一开始用jquery的replace时,发现只替换到第一个.最后没办法,只好用正则表达式来例如下面   re = new RegExp("{thisc ...

  4. JQuery字符串替换replace方法

    在日常的js开发中,常常会用到JQuery, 当要把字符串中的内容替换时,如果使用类似C#的string.replace方法,如下 var str='aabbccaa'; str=str.replac ...

  5. jQuery之替换节点

    如果要替换节点,jQuery提供了两个方法:replaceWith()和replaceAll(). 两个方法的作用相同,只是操作颠倒了. 作用:将所有匹配的元素都替换成指定的HTML或者DOM元素.( ...

  6. jQuery实现节点克隆

    为了便于在DOM节点进行添加或者删除节点元素,使用克隆的方法比较方便,下面是js部分的主要代码 var container = $('.recordCon'); var cloneDom = cont ...

  7. html(jQuery)替换字符串(全部替换)

    var  str= "a<br/>b<br/>c<br/>"; var Newstr = str.replace("<br/&g ...

  8. jQuery页面替换+php代码实现搜索后分页

    HTML代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...

  9. jquery toggle 替换的实现

    $('#example').click(function(){$("#exampleBox").toggle();}) 改为 $('#example').click(functio ...

随机推荐

  1. 10w+QPS 的 Redis 真的只是因为单线程和内存?360&#176; 深入底层设计为你揭开 Redis 神秘面纱!

    原文链接:10w+QPS 的 Redis 真的只是因为单线程和内存?360° 深入底层设计为你揭开 Redis 神秘面纱! 你以为 Redis 这么快仅仅因为单线程和基于内存? 那么你想得太少了,我个 ...

  2. C# 9 新特性:代码生成器、编译时反射

    前言 今天 .NET 官方博客宣布 C# 9 Source Generators 第一个预览版发布,这是一个用户已经喊了快 5 年特性,今天终于发布了. 简介 Source Generators 顾名 ...

  3. 从GC的SuppressFinalize方法带你深刻认识Finalize底层运行机制

    如果你经常看开源项目的源码,你会发现很多Dispose方法中都有这么一句代码: GC.SuppressFinalize(this); ,看过一两次可能无所谓,看多了就来了兴趣,这篇就跟大家聊一聊. 一 ...

  4. 用libevent写的海康摄像头rtsp客户端

    之前一直使用live555作为RTSP的客户端,但其框架臃肿,虽然支持各种格式,但实际中并没有这些需求,关键是其注重于格式的解析,却不注重网络IO,单线程下性能也不高,重新用libevent编写rts ...

  5. JS中switch语句做选择时为什么可以不用break?

    在JavaScript中,switch语句相比其他语言并没有特殊之处. 在使用时,我们要注意每个分支后都应加一条break语句,否则后面的分支仍然会执行.实际程序中,我发现有时没用break语句,仍然 ...

  6. matlab混合编程向导(vc,vb,.net...)

    一.matlab与vc混编  1.通过mcc将matlab的m文件转化为cpp,c文件或dll供vc调用:     这方面的实现推荐精华区Zosco和ljw总结的方法(x-6-1-4-3-1和2)  ...

  7. 在Jetson TX2上安装caffe和PyCaffe

    caffe是Nvidia TensorRT最支持的深度学习框架,因此在Jetson TX2上安装caffe很有必要.顺便说一句,下面的安装是支持python3的. 先决条件 在Jetson TX2上完 ...

  8. 算法---BitMap

    问题: 假设有3亿个整数(范围0-2亿),如何判断某一个树是否存在.局限条件一台机器,内存500m. 常规的思路:我们可以将数据存到一个集合中,然后判断某个数是否存在:或者用一个等长的数组来表示,每个 ...

  9. python恺撒密码 与 字符串反码 【chr()与ord()函数的两种不同应用】

    恺撒密码  描述 恺撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪ ...

  10. 从一条数据说起——InnoDB存储数据结构

    本篇博客参考掘金小册--MySQL 是怎样运行的:从根儿上理解 MySQL 先给大家讲一个故事,我刚参加工作,在一个小作坊里面当[码畜](尽管现在也是),有一天老板从我背后走过,说了一句举世震惊的话: ...