jQuery 教程 (五) 事件与事件对象1 .NET

Raid5损坏两块盘   以下为浪潮Inspur NF5460M4型号服务器故障处理过程: 设备raid5组损坏两块硬,并raid组处理离线状态,情况如图:     由于硬盘数据比较重要,面对此情况不要慌我们尽量做到安全保守的保证数据尽可能完整,以下为处理方法,(遇raid5两块盘出现问题处理方法)   以下截图均为遇相同问题的解决图案,并非现场截图。 Ctrl+H 进WebBios界面,发现两... 阅读详情

一.摘要

事件是脚本编程的灵魂. 所以本章内容也是jQuery学习的重点. 本文将对jQuery中的事件处理以及事件对象进行详细的讲解.

二.前言

本篇文章是至今为止本系列内容最多的一篇, 足以可见其重要性. 大家反映要多列举示例. 我会在时间允许的情况下尽量多列举示例. 真正的投入生产使用的实例暂时还无法加入到文章中, 但是可能最后我会列举一些作品供大家借鉴. 另外本人水平有限, 因为我不是UI设计师. 文章可能有错误的地方, 希望大家帮忙指出, 一起学习一起进步. 在技术的世界里我们是没有任何利益瓜葛. 希望大家都抱着彼此鼓励的心态, 对于回复中的激进评论我也都会考虑, 但是希望能够彼此尊重, 保护博客园这片程序员的净土!

三.事件与事件对象

曾经在我的 "Javascript公共脚本库系列(二): 添加事件多播委托的方法" 和 "Javascript公共脚本库系列(三): 格式化事件对象/事件对象详解" 两篇文章中, 曾讲解过javascript中的事件和事件对象.

首先看一下我们经常使用的添加事件的方式:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>javascript中的事件</title>

    <script type="text/javascript" src="scripts/jquery-1.3.2-vsdoc2.js"></script>

    <script type="text/javascript">
        $(function()
        {
            document.getElementById("testDiv2").onclick = showMsg;
        })

        function showMsg(event)
        {
            alert("!!!");
        }        
    </script>
</head>
<body>
    <div id="testDiv1" onclick="showMsg();">单击事件 1</div>
    <div id="testDiv2">单击事件 2</div>
</body>
</html>


我们最常使用为元素添加onclick元素属性的方式添加事件.

为testDiv2的添加onclick事件的方式是修改Dom属性.

在上一章中已经说明了什么是元素属性, 什么是Dom属性.这两种方式的效果相同. 当单击div时会显示提示框.

请注意, 虽然效果相同, 但是并不等效.

document.getElementById("testDiv2").onclick = showMsg;


等效于:

<div id="testDiv1" onclick="alert("!!!");">单击事件 1</div>


注意两者的区别了吗? 我们常用的修改元素属性添加事件的方式, 实际上是建立了一个匿名函数:

document.getElementById("testDiv1").onclick = function(event)
{
    alert("!!!");
};


这个匿名函数的签名和我们手写的showMsg签名相同, 所以可以把showMsg直接赋值给onclick.

这种方式的弊端是:

1. 只能为一个事件绑定一个事件处理函数. 使用"="赋值会把前面为此时间绑定的所有事件处理函数冲掉.

2. 在事件函数(无论是匿名函数还是绑定的函数)中获取事件对象的方式在不同浏览器中要特殊处理:

IE中,事件对象是window对象的一个属性.事件处理函数必须这样访问事件对象:

        obj.onclick=function()
        {
            var oEvent = window.event;
        }

在DOM标准中,事件对象必须作为唯一参数传给事件处理函数:

        obj.onclick=function()
        {
            var oEvent = arguments[0];
        }

除了使用argument[0]访问此参数, 我们也可以指定参数名称,上面的代码等同于:

        obj.onclick=function(oEvent)
        {
            
        }

目前兼容DOM的浏览器有Firefox,Safari,Opera,IE7等.

3. 添加多播委托的函数在不同浏览器中是不一样的.

下面是在"Javascript公共脚本库系列(二): 添加事件多播委托的方法"文章中, 提供的兼容多浏览器添加多播委托的方法:

//统一的为对象添加多播事件委托的方法
/*  
    参数说明:
    oTarget     : 要添加事件的对象.比如"document".
    sEventType  : 事件类型.比如单击事件"click".
    fnHandler   : 发生事件时调用的方法. 比如一个静态函数"hideCalendar"
    
    使用举例:
    //单击页面的任何元素,只要没有取消冒泡,都可以关闭日历控件
    var cf = document.getElementById("CalFrame");
    if( cf != null && hideCalendar != null )
    {
        ScriptHelper.addEventListener( document, "click", hideCalendar );
    }
*/
scriptHelper.prototype.addEventListener = function(oTarget, sEventType, fnHandler)
{
    if( oTarget.addEventListener )//for dom
    {
        oTarget.addEventListener( sEventType, fnHandler, false )
    }
    else if( oTarget.attachEvent )//for ie
    {
        oTarget.attachEvent( "on" + sEventType, fnHandler);
    }
}


所以我们首先应该摒弃<div onclick="..."></div>这种通过修改元素属性添加事件的方式. 尽量使用添加多播事件委托的方式为一个事件绑定多个事件处理函数, 比如为document对象的单击事件添加一个关闭弹出层的方法, 使用多播就不会影响document对象原有的事件处理函数.

四. jQuery中的事件

有了jQuery, 我们有了处理对象事件的一系列函数. 上面基础知识还是要懂, 但是再也不用自己去实现处理多播事件委托的函数了. 正所谓有了jQuery, 天天喝茶水. 下面是在jQuery中最常使用的bind()方法举例:

$("#testDiv4").bind("click", showMsg);


我们为id是testDiv4的元素, 添加列click事件的事件处理函数showMsg.

使用jQuery事件处理函数的好处:

1. 添加的是多播事件委托. 也就是为click事件又添加了一个方法, 不会覆盖对象的click事件原有的事件处理函数.

            $("#testDiv4").bind("click", function(event) { alert("one"); });
            $("#testDiv4").bind("click", function(event) { alert("two"); });


单击testDiv4对象时, 依次提示"one"和"two".

2. 统一了事件名称.
添加多播事件委托时, ie中是事件名称前面有"on". 但是使用bind()函数我们不用区分ie和dom , 因为内部jQuery已经帮我们统一了事件的名称.

3. 可以将对象行为全部用脚本控制.
让HTML代码部分只注意"显示"逻辑. 现在的趋势是将HTML的行为, 内容与样式切分干净. 其中用脚本控制元素行为, 用HTML标签控制元素内容, 用CSS控制元素样式. 使用jQuery事件处理函数可以避免在HTML标签上直接添加事件.

下面是基础的jQuery事件处理函数:

事件处理 Event Handling:

名称说明举例

bind( type, [data], fn )

为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数。当每个段落被点击的时候,弹出其文本:

$("p").bind("click", function(){
alert( $(this).text() );
});

one( type, [data], fn )为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数。当所有段落被第一次点击的时候,显示所有其文本:

$("p").one("click", function(){
alert( $(this).text() );
});

trigger( event, [data] )在每一个匹配的元素上触发某类事件。

这个函数也会导致浏览器同名的默认行为的执行。比如,如果用trigger()触发一个'submit',则同样会导致浏览器提交表单。如果要阻止这种默认行为,应返回false。

你也可以触发由bind()注册的自定义事件

给一个事件传递参数:

$("p").click( function (event, a, b) {
// 一个普通的点击事件时,a和b是undefined类型
// 如果用下面的语句触发,那么a指向"foo",而b指向"bar"
} ).trigger("click", ["foo", "bar"]);

triggerHandler( event, [data] )这个特别的方法将会触发指定的事件类型上所有绑定的处理函数。但不会执行浏览器默认动作.如果你对一个focus事件执行了 .triggerHandler() ,浏览器默认动作将不会被触发,只会触发你绑定的动作:

$("#old").click(function(){
$("input").trigger("focus");
});
$("#new").click(function(){
$("input").triggerHandler("focus");
});
$("input").focus(function(){ $("<span>Focused!</span>").appendTo("body").fadeOut(1000); });

unbind( type, fn )bind()的反向操作,从每一个匹配的元素中删除绑定的事件。

如果没有参数,则删除所有绑定的事件。

你可以将你用bind()注册的自定义事件取消绑定。

如果提供了事件类型作为参数,则只删除该类型的绑定事件。

如果把在绑定时传递的处理函数作为第二个参数,则只有这个特定的事件处理函数会被删除。

把所有段落的所有事件取消绑定:
$("p").unbind()

将段落的click事件取消绑定:
$("p").unbind( "click" )

删除特定函数的绑定,将函数作为第二个参数传入:

var foo = function () {
// 处理某个事件的代码
};
$("p").bind("click", foo); // ... 当点击段落的时候会触发 foo
$("p").unbind("click", foo); // ... 再也不会被触发 foo


电商数据采集实战——多平台价格监控、比价分析与智能告警系统 在电商竞争日益激烈的今天,价格监控与比价分析已成为品牌商、渠道商和消费者的核心需求。对于品牌商而言,需要监控各渠道售价是否低于指导价(破价监控);对于消费者而言,希望在最佳时机以最低价购入心仪商品;对于数据分析师而言,价格波动数据是洞察市场趋势的金矿。然而,电商数据采集面临三大核心挑战:本文将基于 Python + Scrapy + Playwright + Redis + ClickHouse 技术栈,构建一套完整的电商价格监控与比价系统。架构分层说明:电商平台的反爬手段层出不穷,采集系统必须具备多层次的 阅读详情

相关推荐

Qt QChart实战:从零打造一个实时温度监控仪表盘(附完整源码)

本文详细介绍了如何使用Qt QChart模块从零构建一个工业级实时温度监控仪表盘。通过实战案例,展示了波形图的绘制、坐标轴配置、数据流模拟等关键技术,并提供了完整的源码实现,帮助开发者快速掌握Qt在数据可视化领域的应用。

weixin_42537919的博客 243

jQuery 教程 (五) 事件与事件对象2 .NET

五.常用事件函数举例 1.bind( type, [data], fn ) 函数举例 bind()是最常使用的函数, 注意方法签名上data参数, 可以在事件处理之前传递一些附加的数据: function handler(event) { alert(event.data.foo); } $("p").bind("click", {foo: "bar"}, handler) 注意

丨Fanny丨Cri 394

Python逆向爬取Tik Tok,MsToken,X-Bogus以及signature

tiktok作为字节海外的自媒体平台,具有很非常大的价值,本文旨在教会大家实现Tik Tok的签名获取以及数据的最终爬取。

weixin_74305707的博客 3270

Asp.Net+Jquery.Ajax详解7-全局Ajax事件

目录(已经更新的文章会有连接,从7月25日开始,每2到3天更新一篇): Asp.Net+Jquery.Ajax详解1-开篇(2012.07.25发) Asp.Net+Jquery.Ajax详解2-$.Load(2012.07.26发) Asp.Net+Jquery.Ajax详解3-$.get和$.post(2012.07.30发) Asp.Net+Jquery.Ajax详解4-$.ge

一名系统架构师的征途 3724

极坐标格式算法(PFA)-SAR成像算法系列(六)

SAR成像算法:极坐标格式算法,介绍了算法的基本原理以及实现步骤,包含dechirp处理、RVP补偿,距离插值、方位插值。文后附有代码,可根据自身情况下载。

yjh_2019的博客 1万+

模块 stm32_基于STM32设计的RFID读卡模块电路方案(原理图+程序)

采用stm32F030F4,用PWM产生125KHZ的方波,经过推挽电路进行功率放大,高频电流进入LC串联谐振电路,345uH和4.7NF的谐振频率正好是125KHZ,这时电容两端电压会到十几伏。当有卡接近线圈时,线圈两端会有曼彻斯特编码的调幅波。通过二极管以及电容的检波和滤波,产生的小信号送入LM358进行放大和整形,变成单片机可以读取的曼彻斯特编码信号。• IO 分配(采用内部晶...

weixin_28686771的博客 3815

从零开始学习jQuery (五) 事件与事件对象

Source Generator 就是个编译前的代码外挂,Roslyn为它提供了供用户自定义的入口,也叫扩展点,让我们可以根据语法和语义解析来结合自己的需求规则,在编译阶段,额外生成一些c# 代码,让你少写代码,提高效率,而且生成的代码就跟你自己写的一样,生成完之后,默认会和自己的源码一起进行编译为dll。这个比较重要,意思就是定义一个接收器,蹲在编译器旁边,盯着所有代码,他的任务就是从所有源代码里,找出符合的特定的目标,然后存起来,这里是只要语义是类的节点就存起来,记。

qkP8aID39的博客 821

基于dify平台批量分析excel格式信息

如何以表格形式批量输入一些信息,然后让大模型以对话应用形式逐条进行推理分析?请逐行分析以下数据,给出推理结果:{{input}}这里提供一个分步解决方案,结合。

knightissocool的博客 8009

ASP.NET MVC 中使用 jQuery DataTables 教程

ASP.NET MVC 中使用 jQuery DataTables 教程 项目介绍 Mvc.JQuery.DataTables 是一个开源项目,旨在简化 ASP.NET MVC 应用程序中将 IQueryable 数据源与流行的 jQuery DataTables 插件集成的过程。它提供了一系列辅助方法,允许开发者轻松地将复杂的表格功能(如过滤、排序、分页及自定义渲染)添加到基于控制器的视图中,...

gitblog_00662的博客 672

Hypack 应用于地形测量的高级设置操作要领

Hypack 是业界公认最好的水文导航测量软件,是目前世界上应用广泛的专业测量疏浚软件。它能够接收,处理,存储和输出各种数据。Hypack支持绝大部分GPS,测深仪(国内如海鹰HY1603单波束测沙仪),多波束测深仪,旁扫声纳,涌浪补偿器,水位仪,验潮仪以及声速剖面仪。利用 Hypack 可以进行导航,单波束测量,多波束测量,旁扫测量以及疏浚实时监测等。软件界面友好,使用方便。本文简要阐述Hypack 应用于地形测量的几个重要操作要领。

中游鱼的博客 2794

从传统业务到 AI Skill:产品经理也能看懂的能力改造指南(含完整案例)

从传统业务到 AI Skill:产品经理也能看懂的能力改造指南(含完整案例)

专注于编程、AI、人工智能等多个领域内容研究和分析 641

jquery 检测回车事件_jquery 回车事件

简单地记下jquery实现回车事件,代码如下:全局:$(document).keydown(function(e){if(e.keyCode==13){$(".login-li input[type=button]").trigger("click");}});某个控件:$("body").keydown(function(e){if(e.keyCode==13){$(".login-li inp...

weixin_39534208的博客 1913

Codex入门10-Goal自主任务(进阶必学:设定目标就不管了,AI自己干活到完成)

/goal 是Codex CLI最强大的进阶功能——设定一个目标,AI就会制定计划、分步执行、自我测试、持续迭代,即使你关掉终端也会继续。本文详解/goal的工作原理、配置启用方法、常用命令(pause/resume/status/clear),以及如何写出高质量的目标描述让AI高效自主完成任务。

yueyeguzhuo的专栏 454

jQuery对象与dom对象的区别

1.jQuery对象和DOM对象 第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery对象和DOM对象以及它们之间的关系. DOM对象,即是我们用传统的方法(javascript)获得的对象,jQuery对象即是用jQuery类库的选择器获得的对象; 复制代码 代码如下: var domObj = document.getElementBy

前端 潇凡-一个标准前端IT女 544

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

jQuery MAC项目的创建、jQuery的事件与转换

MAC项目的创建 选择器的作用就是查找元素 创建MAC的具体步骤: 第一步:先创建一个元素 (见图表1) 图表 1 第二步:选择web和ASP.NET Web 应用程序,添加项目名称以及存储的位置 (见图表2) 图表 2 第三步:选择MAC以及空的模板 [Empty] (见图表3) 图表 3 第三步:先添加一个新的文件夹 文件名可以随意更换 但默认地文件名为Conrtert。 注意:添加的新的文件名要选中解决方案下面的jQuery body右击添加,选择到其他的文件名添加.

weixin_49756484的博客 526

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jQuery框架学习第五天:事件与事件对象

jQuery框架学习第一天:开始认识jQueryjQuery框架学习第二天:jQuery中万能的选择器jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQuery操作元素的属性与样式jQuery框架学习第五天:事件与事件对象jQuery框架学习第六天:jQuery中的Ajax应用jQuery框架学习第七天:jQuery动画–jQuery让页面动起来! jQu...

weixin_34008784的博客 155

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jQuery对象与DOM对象

开发工具与关键技术:Visual Studio ASP.NET MVC 作者:刘剑鸿 撰写时间:2019年06月24日 星期一 jQuery对象与DOM对象 jQuery对象和DOM对象是不一样的,初次学习jQuery函数库要注意的一点。可有时分不清哪些是jQuery对象,哪些是DOM对象怎么办? 下面通过例子简单区分jQuery对象和DOM对象: 我们...

weixin_44538469的博客 157

关于jquery中丢失事件的问题

我的网站是用asp.net mvc 做的。其中用到了jquery代码:$(document).ready(function() {        $(#btn_skey).load(function() {            $(#btn_skey).mouseover(function() {                var skey = $.trim($(#sk

yzq124391的专栏 965

asp.net中ScriptManager自带Ajax与jQuery事件冲突

问题引诉:最近在使用asp.net自带的无刷新提交ScriptManager时,发现一个问题,就是和我自己用jQuery写的一些事件函数和局部刷新相冲突。通过在网上收索,发现很多人都遇到这个同样的问题。最终还是找到的解决的办法,在此我想将其解决的办法分享出来供大家参考。 问题解决办法: 方法1、两者实现都能够实现页面的无刷新效果,所以可以保留其中的一种即可; 方法2、如果必须要两者混合应用,

给力VSTO 1666

jquery访问asp.net 返回的json对象

asp.net中将DataTable转换成json格式 /// /// dataTable转换成Json格式 /// /// /// public static string DataTable2Json(DataTable dt, string t

handsometone1982的专栏 2386

AJAX触发aspnet控件的C#事件(基于Jquery)

 熟悉asp.net事件机制的人都知道,在aspnet生成的页面里有两个隐藏域。input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />第一个“

锐锋的专栏 2115

JQuery教程详解之五AJAX与noConflict()

JQuery教程详解之五AJAX与noConflict()

无名 493

按钮点击触发ajax事件,Jquery asp.net按钮点击事件通过ajax

这是jQuery真正发光的ASP.Net开发人员。假设你有这个ASP按钮:当呈现时,你可以看看页面的源代码,它上面的id不会是btnAwesome,而是$ ctr001_btnAwesome或者类似的东西。这使得它在屁股中发现在javascript中的痛苦。输入jQuery。$(document).ready(function() {$("input[id$='btnAwesome']").cli...

weixin_29159711的博客 1313

.net a标签触发事件_89.jQuery基础语法、选择器、事件等

0.1、基础语法: $(selector).action()美元符号定义 jQuery选择符(selector)“查询"和"查找” HTML 元素jQuery 的 action() 执行对元素的操作0.2、jQuery选择器元素:在页面中选取所有的元素 $(“p”)#id选择器 : 。。。用$("#demo").class 选择器 。。。。$(".test")当前。。。。。。$(this)$(“...

weixin_39754411的博客 141

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 137
上一篇: 常州嬉戏谷游玩全攻略
下一篇: jQuery 教程 (五) 事件与事件对象2 .NET
Fanny
博客等级 码龄20年 9粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值