jquery(二)

news/2024/7/10 22:57:34 标签: jquery, javascript, 前端

jQuery 事件

一、jQuery 事件注册

单个事件注册

语法:

element.事件(function () {})
$('div').click(function () { 事件处理程序 })

其他事件和原生基本一致。

比如 mouseovermouseoutblurfocuschangekeydownkeyupresizescroll

二、jQuery 事件处理

2.1 事件处理 on() 绑定事件

on() 方法在匹配元素上绑定一个或多个事件的事件处理函数

语法:

element.on(events,[selector],fn)

1. events:一个或多个用空格分隔的事件类型,如"click"或"keydown" 。

2. selector: 元素的子元素选择器 。

3. fn:回调函数 即绑定在元素身上的侦听函数。

on() 方法优势1:

可以绑定多个事件,多个处理事件处理程序。

 $(“div”).on({
  mouseover: function(){}, 
  mouseout: function(){},
  click: function(){}	
}); 

如果事件处理程序相同

 $(“div”).on(“mouseover mouseout”, function() {
   $(this).toggleClass(“current”);
  });  

on() 方法优势2:

可以事件委派操作 。事件委派的定义就是,把原来加给子元素身上的事件绑定在父元素身上,就是把事件委派给父元素。

$('ul').on('click', 'li', function() {
    alert('hello world!');
}); 

在此之前有bind(), live() delegate()等方法来处理事件绑定或者事件委派,最新版本的请用on替代他们。

on() 方法优势3:

动态创建的元素,click() 没有办法绑定事件, on() 可以给动态生成的元素绑定事件。

 $(“div").on("click",”p”, function(){
     alert("俺可以给动态生成的元素绑定事件")
 });  
 $("div").append($("<p>我是动态创建的p</p>"));

2.2 事件处理 off() 解绑事件

off() 方法可以移除通过 on() 方法添加的事件处理程序。

$("p").off() // 解绑p元素所有事件处理程序

$("p").off( "click")  // 解绑p元素上面的点击事件 后面的 foo 是侦听函数名

$("ul").off("click", "li");   // 解绑事件委托

如果有的事件只想触发一次, 可以使用 one() 来绑定事件。

2.3 自动触发事件 trigger()

有些事件希望自动触发, 比如轮播图自动播放功能跟点击右侧按钮一致。可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发。

element.click()  // 第一种简写形式
element.trigger("type") // 第二种自动触发模式
$("p").on("click", function () {
  alert("hi~");
}); 

$("p").trigger("click"); // 此时自动触发点击事件,不需要鼠标点击
element.triggerHandler(type)  // 第三种自动触发模式

triggerHandler模式不会触发元素的默认行为,这是和前面两种的区别。

三、jQuery 事件对象

事件被触发,就会有事件对象的产生。

element.on(events,[selector],function(event) {})

阻止默认行为:event.preventDefault()   或者 return  false

阻止冒泡: event.stopPropagation()      

jQuery 其他方法

一、jQuery 拷贝对象

如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以使用 $.extend() 方法

语法:

$.extend([deep], target, object1, [objectN])
 
  • deep: 如果设为 true 为深拷贝,不写则为浅拷贝
  • target:要拷贝的目标对象
  • object1:待拷贝到第一个对象的对象。
  • objectN:待拷贝到第 N 个对象的对象。
  • 浅拷贝是把被拷贝的 对象复杂数据类型 中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象。
    对于简单数据类型属性,则不会拷贝地址。
  • 深拷贝,前面加 true, 完全克隆(拷贝的对象,而不是地址),修改目标对象不会影响被拷贝对象。
$(function(){
    var targetObj = {};
    var obj = {
       id: 1,
       name: "andy"
    };
    // $.extend(target,obj);
    $.extend(targetObj,obj);     // 会覆盖targetObj里面原来的数据
    // 把 obj 拷贝给 targetObj
})
<script>
    $(function() {
        var targetObj = {
                    id: 0,
                    msg: {
                        sex: '男'
                    }
                };
                var obj = {
                    id: 1,
                    name: "andy",
                    msg: {
                        age: 18
                    }
                };
        // 1. 浅拷贝把原来对象里面的复杂数据类型地址拷贝给目标对象
        // targetObj.msg.age = 20;
        // console.log(targetObj);
        // console.log(obj);
        // 2. 深拷贝把里面的数据完全复制一份给目标对象 如果里面有不冲突的属性,会合并到一起 
        $.extend(true, targetObj, obj);
        // console.log(targetObj); // 会覆盖targetObj 里面原来的数据
        targetObj.msg.age = 20;
        console.log(targetObj); // msg :{sex: "男", age: 20}
        console.log(obj);

二、多库共存

问题概述:

jQuery使用$作为标示符,随着jQuery的流行,其他 js 库也会用这$作为标识符, 这样一起使用会引起冲突

客观需求:
需要一个解决方案,让jQuery 和其他的js库不存在冲突,可以同时存在,这就叫做多库共存。
解决方案:

  1. 把里面的 $ 符号统一改为 jQuery。 比如 jQuery(’‘div’’)
  2. jQuery 变量规定新的名称:$.noConflict() var xx = $.noConflict();

三、jQuery 插件

jQuery 功能比较有限,想要更复杂的特效效果,可以借助于 jQuery 插件完成。

注意: 这些插件也是依赖于jQuery来完成的,所以必须要先引入jQuery文件,因此也称为 jQuery 插件。

jQuery 插件常用的网站:

jQuery插件库 http://www.jq22.com/ (需要登录)

jQuery之家 http://www.htmleaf.com/ (不需登录,推荐)
 

jQuery 插件使用步骤:

1.  引入相关文件。(jQuery 文件 和 插件文件)    

2.  复制相关html、css、js (调用插件)。

jQuery 插件演示:

  1. 瀑布流
  2. 图片懒加载
    图片使用延迟加载在可提高网页下载速度。它也能帮助减轻服务器负载)
    当我们页面滑动到可视区域,再显示图片。
    我们使用jquery 插件库 EasyLazyload。 注意,此时的 js 引入文件和 js 调用必须写到 DOM 元素(图片)最后面
  3. 全屏滚动(fullpage.js)
    • gitHub: GitHub - alvarotrigo/fullPage.js: fullPage plugin by Alvaro Trigo. Create full screen pages fast and simple
    • 中文翻译网站: jQuery全屏滚动插件fullPage.js演示_dowebok

bootstrap JS 插件:

bootstrap 框架也是依赖于 jQuery 开发的,因此里面的 js插件使用 ,也必须引入jQuery 文件。

案例:toDoList

  1. 文本框里面输入内容,按下回车,就可以生成待办事项。
  2. 点击待办事项复选框,就可以把当前数据添加到已完成事项里面。
  3. 点击已完成事项复选框,就可以把当前数据添加到待办事项里面。
  4. 但是本页面内容刷新页面不会丢失。

http://www.niftyadmin.cn/n/1804615.html

相关文章

下载不同版本tomcat的方法

导语 是否为进入tomcat找不见自己想要的版本发愁 请查看本篇文章 再也不用为找不到自己想要的tomcat版本发愁 文章目录导语是否为进入tomcat找不见自己想要的版本发愁请查看本篇文章再也不用为找不到自己想要的tomcat版本发愁第一步 进入tomcat官网第二步 选择archives第三步…

雅礼中学七天乐(游记

来给dalao们捶背倒茶当炮灰的qwq \(Day 0\) 早上在机房充了会手机&#xff0c;去看我班袋鼠跳。 然后就溜了...qwq 提前到了运城机场&#xff0c;去取登机牌&#xff0c;发现不能选座&#xff1f;&#xff1f;&#xff1f;转了半天还是没成功靠上窗...然而书名号他们来了之后就…

css(五)--定位

一、定位 1.为什么需要定位 提问&#xff1a; 以下情况使用标准流或者浮动能实现吗&#xff1f; 1. 某个元素可以自由的在一个盒子内移动位置&#xff0c;并且压住其他盒子.2. 当我们滚动窗口的时候&#xff0c;盒子是固定屏幕某个位置的。以上效果&#xff0c;标准流或浮动都…

PAT Basic 1049

1049 数列的片段和 给定一个正数数列&#xff0c;我们可以从中截取任意的连续的几个数&#xff0c;称为片段。例如&#xff0c;给定数列 { 0.1, 0.2, 0.3, 0.4 }&#xff0c;我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (…

css(六)--css高级技巧

一、精灵图 1.为什么需要精灵技术 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度。 目的&#xff1a;为了有效地…

java web项目使用ant编译将不同的功能代码打包成jar,进而分局点将项目打包成不同的tar.gz包进而部署...

使用ant可以轻松的将一个项目分离代码&#xff0c;直接打包成不同需求的tar.gz包使用 1.build.properties &#xff08;属性&#xff09; version.num1.0 #版本信息 2.build.xml &#xff08;ant打包文件&#xff09; View Code转载于:https://www.cnblogs.com/huigee/p/973436…

CVE-2017-12615 Apache Tomcat任意文件上传漏洞

文章目录 0x00 漏洞介绍0x01影响版本002原理分析0x03 漏洞环境0x04 漏洞复现0x05 漏洞修护免责声明读书笔记0x00 漏洞介绍 2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,该漏洞受影响版本为7.0-7.80之间,在一定条…

robotFramework--ride 问题:Data source does not exist.

第一次安装robotFramework&#xff0c;运行时提示Data source does not exist。最后发现是在Arguments这一栏误输入了. 导致的&#xff0c;去掉.后就可以正常运行了。 转载于:https://www.cnblogs.com/lukechenblogs/p/9465710.html