第十五章 AJAX JQuery

Flowable第一篇、快速上手(Flowable安装、配置、集成) Flowable是一个轻量级、高效可扩展的工作流和业务流程管理(BPM)引擎,支持在Java应用程序中实现复杂的工作流自动化。Flowable最初是作为Activiti项目的一个分支发展而来的,但它现在已经成为一个独立的开源项目,并在企业级应用中得到了广泛使用 阅读详情

第十五章 AJAX JQuery

JQuery是另外一个非常流行的JavaScript框架,相对于Dojo来说JQuery更加的轻便,JQuery代码文件的大小为20kb,但是丝毫没有影响到JQuery的强大功能,也许在了解JQuery之后你会有更深刻的体会。并且JQuery使用了插件的体系结构,开发人员可以在JQuery的基础上利用插件的机制扩展JQuery的功能。

 

和JQuery详细的JavaScript框架有Prototype,虽然Prototype和script.aculo.us也可以制作出强大的功能的页面。但是我更喜欢JQuery的简介方式和强大的插件群。

 

JQuery官方网站: http://www.jquery.com

Prototype官方网站: http://www.prototypejs.org

script.aculo.us官方网站: http://script.aculo.us

 

JQuery核心只有一个文件jquery-x.x.x.x.js,其中x.x.x.x表示了文件的版本,现在最新的版本为1.1.3.1。并且为了提高jquery的下载效率,官方网站提供了一个压缩版本的文件,这个文件只有20kb。

 

安装jqueyr只需要将jquery-x.x.x.x.js拷贝到对应web项目的javascript脚本目录即可。

<script type="text/javascript" src="path/to/jquery.js"></script>

 

JQuery 核心

Onload 使用

我们有些时候需要在页面初始化完成的时候调用一些JavaScript预处理操作,例如设置某些Button不可用等,这个时候我们通常有两种选择。

第一:<body onload=”someFunction();”>

第二:window.onload = someFunction;

上述代码意义相同,都会在页面初始化完成之后执行someFunction这个预先定义的JavaScript函数。但是,页面初始化完成到底是什么含义呢?页面初始化完成意味着页面全部被浏览器显示,也就是说所有的image都加载完成。有些时候这个过程非常的常,有些时候我们可以看到有些网站的button先是可用,后来等所有页面显示之后又不可用了就是这个原因。

 

那么我们到底在什么时候执行someFunction是比较合适的呢?我们倾向于页面的全部document内容被加载,而不是所有内容正确显示之后别调用。

 

以img为例说明上述的区别,例如

<img src=”http://hostname:port/webapp/xxx.jpg” />

当上述字面内容被浏览器下载完成时,我们可以说img被加载了,当http://hostname:port/webapp/xxx.jpg指向的内容被下载并且被正确显示之后,可以说img被正确显示了。

 

如何使用JQuery来达到页面内容别加载就执行someFunction?

$(document).ready(someFunction);

 

$()是什么?

$()是JQuery的核心方法,$()方法有几种不同的调用方式,但是这几种方式都有一个共通的特点,就是通过$()方法,可以将一个普通的HTML DOM对象(p, div, body, doucment等)封装成为一个特殊的,增强了JQuery功能的JQuery对象。

说道这里大家可能会知道了JQuery其实相当于一个对象,一个封装了不同HTMLDOM对象的对象。

 

$(string)

         凭空创建一个JQuery包装起来的HTML DOM对象,例如:

         $("<div><p>Hello</p></div>").appendTo("body")

上述代码建立了一个Hello段,Hello段在一个div内部,之后将这个div追加到了doby内部。

 

$( elems )

         讲一个已经存在的HTML DOM对象包装为JQuery对象,例如:

         $(document.body).css( "background", "black" );

         上述代码把body的background设置为black

         $( myForm.elements ).hide()

         隐藏myForm中所有的对象

 

$( function)

$(document).ready(function)的简写,总共有三种方法让一个function在dom初始化完成之后被调用:

         $(document).ready(function)

         $( function)

         JQuery(function)

 

$( expr, context )

在上下文()中查找表达式()所只是的对象,context不存在的情况下在document上下文中查找,例如:

DOM对象:   <p>one</p> <div><p>two</p></div> <p>three</p>

调用:              $("div > p")

结果:              <p>two</p>

 

$("input:radio", document.forms[0])

查找第一个form中的所有redio类型的输入框。

$("div", xml.responseXML)

查找xml.responseXML指示的XML文件内容中所有的div项。

 

扩展JQuery的功能

可以使用$.fn.extend( prop )来扩展JQuery提供的功能,例如,JQuery并没有提供check和uncheck方法,但是我们可以通过如下的代码扩展JQquery,使JQuery增加check和uncheck功能:

jQuery.fn.extend({

   check: function() {

     return this.each(function() { this.checked = true; });

   },

   uncheck: function() {

     return this.each(function() { this.checked = false; });

   }

 });

 

之后我们可以选择一个对象来使用扩展的check和uncheck方法,例如:

 

 $("input[@type=checkbox]").check();

 $("input[@type=radio]").uncheck();

 

解决和其他框架的冲突

$在JQuery中有着特殊的含义,但是有些时候我们的项目已经集成了其他的框架)(例如Prototype),在其他框架中$已经被使用了,那么我们怎么消除JQuery对$指定的特殊含义呢?

我们可以使用jQuery.noConflict()方法,在调用这个方法之后,$已经不在具有我们前面说的JQuery赋予的功能,所以所有的后续代码必须使用JQuery调用,例如:

 

jQuery.noConflict();

        // 调用JQuery的方法

        jQuery("div p").hide();

        // 调用其他框架的$()方法

        $("content").style.display = 'none';

 

我们也可以指定自己喜欢的名字来替换$,例如:

var j = jQuery.noConflict();

// 调用jQuery的方法

j("div p").hide();

// 调用其他框架的 $( ) 方法

$("content").style.display = 'none';

 

其他常用方法

each( fn )

         这对数组中的每一个对象调用fn方法。例如:

         HTML DOM代码:<img/><img/>

         调用方法:              $("img").each(function(i){

                                                     this.src = "test" + i + ".jpg";

});

         结果:                       <img src="test0.jpg"/><img src="test1.jpg"/>

 

eq( pos )

         定位具体的HTML DOM对象

         HTML DOM代码:<p>This is just a test.</p><p>So is this</p>

         调用方法:              $("p").eq(1)

         结果:                        <p>So is this</p>

 

get( pos )

         定位具体的HTML DOM对象(脱掉了JQuery的包装,原始的DOM对象)

         HTML DOM代码:<img src="test1.jpg"/> <img src="test2.jpg"/>

         调用方法:              $("img").get( num )

         结果:                        <img src="test1.jpg"/>

 

get()

         针对所有的对象,脱掉了JQuery的包装,获取原始的DOM对象

         HTML DOM代码:<img src="test1.jpg"/> <img src="test2.jpg"/>

         调用方法:              $("img").get()

         结果:                        <img src="test1.jpg"/><img src="test2.jpg"/>

 

gt( pos )

         取出pos之后的所有对象

         HTML DOM代码:<img src="test1.jpg"/> <img src="test2.jpg"/>

         调用方法:              $("img").gt(0)

         结果:                        <img src="test1.jpg"/>

 

index( subject )

         找到subject在数组中对应的index,不存在时返回-1

         HTML DOM代码:<div id="foobar"><b></b><span id="foo"></span></div>

         调用方法:              $("*").index( $('#foobar')[0] )

         结果:                        0

 

Length

         返回对象数组的长度。

         HTML DOM代码:<img src="test1.jpg"/> <img src="test2.jpg"/>

         调用方法:              $("img").length

         结果:                        2

 

lt( pos )

         与gt相反

         HTML DOM代码:<p>This is just a test.</p><p>So is this</p>

         调用方法:              $("p").lt(1)

         结果:                        <p>This is just a test.</p>

 

size()

         与length相同

 

 

JQuery HTML DOM遍历和选择器

JQuery的功能很强大,可以包装任何一个HTML DOM元素添加强大的功能,那么如何找到需要的元素呢?这就需要JQuery Selector来帮慢,原理上讲,JQuery Selector可以超找到HTML DOM里的任何元素

 

JQuery Selector主要包含三个方面的实现:CSS方式,XPath方式,和JQuery自定义的方式。

为了逐个讲解这些Selector,首先给大家一些基本的例子:

 

隐藏所有包含链接(a)的段(p):

$("p[a]").hide();

 

显示一个页面的第一个段(p):

$("p:eq(0)").show();

 

将所有显示(visible=true)的div隐藏:

$("div:visible").hide();

 

所有无须列表(ul)的项目(li):

$("ul/li")

或者 $("ul > li") */

获得所有class类型为foo,并且包含链接(a)的段:

$("p.foo[a]");

 

获得所有字符内容包含Register的项目(li)

$("li[a:contains('Register')]");

 

得到name=bar的输入项目的值:

$("input[@name=bar]").val();

 

获得所有被选中的button:

$("input[@type=radio][@checked]")

 

CSS方式

JQuery的CSS方式的Selector支持CSS1-CSS3标准。

 

与CSS中的实现完全一致的:

*

         任何的元素

E

         任何类型为E的元素

E:nth-child(n)

         E元素的第n个子元素

E:first-child

         E的第一个子元素

E:last-child

         E的最后一个元素

E:only-child

         E的唯一的子元素

E:empty

         E没有子元素,也不能包含text内容

E:enabled

         E类型的UI元素,并且不是disabled的

E:disabled

         E类型的UI元素,并且是disabled的

E:checked

         E类型的UI元素(radio或者checkbox),并且是checked的

E:selected

         E类型的UI元素(option),并且是选中的(虽然CSS中没有支持,JQuery支持)

E.warning

         Class = warning的元素(dot(.) 表示class)

E#myid

         Id=myid的元素,最多有一个元素被选中。

E:not(s)

         E类型的元素,但是与简单selector  s 不匹配

E F

         E类型的F类型的后代元素

E > F

         E类型的F类型的子元素(F在E之内)

E + F

         F类型紧跟着E类型(F在E之后,并且紧挨着)

E ~ F

         F类型前面连着E类型(F在E之后,不一定紧挨着)

E,F,G

         E,F,G所有类型的元素

 

与CSS中实现稍有不同的:

E[@foo]

         包含属性foo的E类型的元素

E[@foo=bar]

         包含属性foo,并且属性foo的值为bar的E类型的元素

E[@foo^=bar]

         包含属性foo,并且foo的值以bar开始的E类型的元素

E[@foo$=bar]

         包含属性foo,并且foo的值以bar结尾的E类型的元素

E[@foo*=bar]

         包含属性foo,并且foo的值包含bar的E类型的元素

E[@foo=bar][@baz=bop]

         属性foo值为bar,属性baz值为bop的E类型的元素。

 

XPath方式

 

位置路径

    在HTML DOM中查找:

                 $("/html/body//p")

                 $("body//p")

                 $("p/../div")

         在当前上下文中查找:

 $("p/*", this)

                 $("/p//a", this)

 

坐标位置

         子孙节点有一个子孙节点:

 $("//div//p")

         子孙节点有一个子节点:

 $("//div/p")

 

        $("//div ~ form")

$("//div/../p")

 

预言

$("//input[@checked]")

$("//a[@ref='nofollow']")

$("//div[p]")

        $("//div[p/a]")

 

[last()] or [position()=last()] becomes :last

 

        $("p:last")

 

    [0] or [position()=0] becomes :eq(0) or :first

 

$("p:first")

$("p:eq(0)")

 

    [position() < 5] becomes :lt(5)

$("p:lt(5)")

[position() > 2] becomes :gt(2)

$("p:gt(2)")

 

JQuery自定义的Selector

:even

         偶数节点选择

:odd

         奇数节点选择

:eq(n) and :nth(n)

         第n个元素

:gt(N)

         排序比N大的元素

:lt(N)

         排序比N小的元素

:first

与:eq(0)相同

:last

         最后一个元素

:parent

         包含子元素(文本内容也算)的节点

:contains('test')

         包含test文本内容的节点

:visible

         所有显示的元素

:hidden

         所有隐藏的内容

 

例如:

$("p:first").css("fontWeight","bold");

$("div:hidden").show();

$("/div:contains('test')", this).hide();

        

JQueyy 操作HTML属性和CSS

        

JQUery 事件

JQuery 动画效果

JQuery Ajax

JQuery 插件

         JQuery Thickbox plugin

         JQuery Form Plugin

         JQuery Tab Plugin

         JQuery Context Menu Plugin

         JQuery Short Key Plugin

         JQuery Inplace Plugin

 

 
Python爬虫实战:全自动采集银行理财产品收益率数据 本文通过Playwright动态爬虫技术,成功实现了对银行理财产品收益率数据的实时采集,并通过 Pandas 数据清洗、SQLite 存储、调度自动化等模块,构建了一个可扩展的银行理财数据抓取系统。理财非儿戏,数据做决策。掌握银行收益信息是我们迈向理性投资的第一步。希望这套工具对你有所帮助! 阅读详情

相关推荐

Windows 11登录界面密码框消失Bug解析与解决方案

Windows操作系统登录认证机制是系统安全的第一道防线,其图形界面由桌面窗口管理器(DWM)负责渲染。当UI元素渲染异常时,会导致密码输入框等关键组件不可见。这类图形子系统故障通常源于驱动兼容性或主题服务冲突,在Windows 11最新累积更新后尤为常见。通过系统文件检查(sfc)、注册表修复或创建新用户等工程实践方法可有效解决问题。对于企业IT环境,建议采用PIN码或生物识别等替代认证方案,同时定期执行磁盘清理和系统健康检查等Windows维护操作,确保认证服务稳定运行。

weixin_33806859的博客 611

jQuery 基本语法

jQuery,一个 JavaScript 库,极大地简化了 JavaScript 编程,很容易学习。它是一款同prototype、Note.js等一样优秀的js开发库类,特别是对css和XPath的支持,使我们写js变得更加方便!如果你不是个js高手又想写出优秀的js效果,jQuery可以帮你达到目的! 下载地址:jQuery Downloads 简单示例: &lt;html&gt; &lt;h...

系统运维 316

PX4实战指南:通过遥控器通道直连实现舵机PWM控制

本文详细介绍了如何通过PX4飞控实现遥控器通道直连控制舵机PWM输出的完整流程。从硬件准备、遥控器配对到PX4参数配置和硬件连接,提供了实战技巧和常见问题解决方案,帮助无人机爱好者快速掌握舵机控制技术。重点讲解了AUX Passthrough模式设置和PWM参数调整等关键步骤。

weixin_29195217的博客 154

jQuery之筛选

jQuery 筛选 1)过滤 2)查找 3)串联 eq(index|-index) 获取匹配的第二个元素 HTML 代码: <p> This is just a test.</p> <p> So is this</p> jQuery 代码: $("p").eq(1).css("color","red") 结果: [ <p> So is ...

weixin_30411997的博客 187

STM32CubeMX定时器配置

因为只有当 CH2 处于 输入模式 时,硬件才能把这根脚送进滤波器(TI2FP2通道之前要滤波),再生成 TI2FP2 这条支路供 Slave-Mode 控制器使用,也就是说TI2FP2 并不是“独立存在”的,但在CubeMX配置时:如下图,我们只设置Slave Mode和TI1FP1,之后,CH1就自动配置为 Input Capture 了,下图发现,Channel1只能 Input Capture 或者Disable。哪来的主定时器和从定时器呢?把待测 PWM 的高电平当“门”,连接到ETR。

2402_89015641的博客 3185

进芯AVP28335烧录避坑全记录:CCS、Uniflash、C2Prog、SDFlash四大工具配置详解

本文详细解析了进芯AVP28335芯片在烧录过程中遇到的常见问题及解决方案,涵盖CCS、Uniflash、C2Prog和SDFlash四大工具的配置要点。针对国产器件AVP28335的特殊需求,提供了从开发环境准备到烧录验证的全流程指南,帮助开发者高效完成程序烧录,避免常见陷阱。

weixin_30836759的博客 588

juqery 学习之四 筛选--<过滤>

eq(index) 获取第N个元素 这个元素的位置是从0算起。 Reduce the set of matched elements to a single element. The position of the element in the set of matched elements starts at 0 and goes to length - 1. 返回...

weixin_30389003的博客 215

MATLAB实战:蓝牙GFSK调制解调全流程解析(附误码率优化技巧)

本文深入解析了蓝牙GFSK调制解调在MATLAB中的全流程实现,包括高斯滤波器设计、调制解调技术及误码率优化技巧。通过实战案例和代码示例,帮助工程师提升蓝牙通信系统的性能表现,特别是在降低误码率方面的有效方法。

weixin_29046035的博客 277

Jquery练习题

1.HTML代码:   onetwothree   jQuery代码:$("div>p");结果 (A)   A.[two]   B.[one]   C.[three]   D.[two] 2.HTML代码:   DIV   SPAN   P   jQuery代码:$("*") 结果(D)   A. [DIV]   B. [SPAN]   C. [P]

郭晓湉 3177

Benchmark系列——UnixBench测试项深度解析与性能优化指南

本文深度解析UnixBench基准测试套件的各项测试原理,包括Dhrystone、Whetstone、系统调用、进程管理、IPC及文件I/O等核心测试项。通过详细的测试项分析,指导用户解读测试报告,并提供针对性的内核参数调整、编译优化及系统配置实战指南,帮助用户精准定位并优化系统性能瓶颈。

weixin_29230901的博客 275

微信小程序转发功能异常报错 由于小程序违规分享功能暂时无法使用的解决办法

小程序右上角转发功能被封,不代表你违规了,而可能是你没认证、没备案!很多功能都是“先合规、后开发”,踩坑就晚了,别像我一样绕了三圈才发现问题。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2610

第十五章 AJAX请求

用下面的页面来展示AJAX请求其中就绑定了一个单机事件下面就是这个页面下面我们先写一个BaseServlet下面再写一个类来继承BaseServlet类进行配置下面三步之后,就可以将请求发送给服务器了如果下面我要访问这个person对象,由于客户端和服务器不在同一台电脑上,我们将person的地址返回给客户端是没有用的,客户端需要的是里面的数据我们要将其转化成person格式的字符串,再将其返回给客户端那么客户端如何接收请求呢下面用alert我们看响应的信息。

m0_72232218的博客 1128

【OpenClaw从入门到精通】第23篇:OpenClaw办公自动化实战—报表生成+文档批量处理+跨系统同步(2026实操进阶版)

本文聚焦OpenClaw在办公自动化场景的进阶应用,针对职场中高频且重复的报表生成、文档批量处理、跨系统数据同步三大痛点,提供从环境搭建、原理讲解到完整代码实现的全流程实操指南。方案基于Python生态工具链(pandas、Playwright、PyPDF2等)与OpenClaw的低代码编排能力,兼顾新手入门与进阶提升——新手可直接复用代码快速落地,进阶读者可学习流程编排逻辑进行二次开发。所有案例均基于真实办公场景设计,部分虚拟场景已明确标注,代码经本地环境验证可复现。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 966

JQuery实战教程即将面市

作者 张富银,网名(大漠孤烟),现任源代码教育重庆校区教学总监,拥有多年的开发经验,带领团队完成过多个项目的开发与设计,重庆电信职业学院软件工程教学名师。在技术方面精通PHP、c++、Mysql、Mongodb、hadoop、云计算,热衷于主流LAMP网站解决方案,同时对Li...

chouhequ9493的博客 203

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JavaScript 从新手到专家(六)

你已经走得很远了!在这个阶段,你应该已经掌握了 JavaScript 的基础知识。你能够创建应用程序、编写巧妙的脚本,并且能够阅读大量的代码。这为接下来的重要步骤打下了坚实的基础。在本章中,我们将通过实践和探索 JavaScript 提供的无限可能性中你感兴趣的部分,将你所学的知识提升到下一个层次。我们不会在这里过多地详细介绍所有这些主题。这些细节很快就会过时,并且互联网上有大量针对每个主题精心制作的教程和信息。可能性很大,在你阅读这段文字的时候,我们推荐的框架和库已经过时了。好消息是,下一个大事件使用相同

龙哥盟 520

Camera2Demo

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

Vue的总结

本文主要介绍了Vue的知识与总结。

weixin_53227089的博客 3081

golang执行多个linux命令,golang执行linux命令

C和指针 第十五章 习题15.8 十六进制倾印码 #include #include #include #include & ...日常资料&lpar;TNB&rpar;http://www.med66.com/html/2005/5/hu47563183418550025733.html http://www.guokr.com/article/192045/ ht...

weixin_36114355的博客 597

最新javase,Java web,Java ee全套视频下载

关注微信公众号:IT老哥,回复Java全套教程,即可领取:Java基础、Java web、JavaEE全部的教程,包括spring boot等 java基础 00.编程入门 01.第一天:Java语言概述 02.第二天:Java基本语法(1) 03.第三天:Java基本语法(2) 04.第四天:Java基本语法(3) 05.第五天:Java基本语法与项目 06.第六天:Eclipse的使用与数组 07.第七天:数组 08.第八天:面向对象(1) 09.第九天:面向对象(2) 10..

hnjsjsac的博客 590

最新Java web视频教程下载

关注微信公众号:IT老哥,回复Java全套教程,即可领取:Java基础、Java web、JavaEE全部的教程,包括spring boot等 Java web 第一章:HTML&CSS 第二章:JavaScript 第三章:jQuery(上) 第四章:jQuery(下) 第五章:XML&Tomcat 第六章:Servlet(上) 第七章:Servlet(下) 第八章:JSP 第九章:EL表达式&JSTL标签库 第十章:项目实战-图书商城 第十一章:项目...

hnjsjsac的博客 499

struts2开发web

[置顶] 使用Struts2开发Java Web应用程序(目录) 分类: Struts2 2007-08-01 22:12 57367人阅读 评论(48) 收藏 举报 strutsjavaweblocalizationjquerydojo 配套源代码网站:https://teamware.dev.java.net   第一部分 Struts入门     第一章 Struts2...

LIXG425的专栏 187

《Pro ASP.NET MVC 3 Framework (Third Edition)》 笔记提纲

《Pro ASP.NET MVC 3  Framework》书籍本身的信息就不多提了(不了解的可以Google一下),内容信息量很大(837页),适合ASP.NET的开发者,特别像我这样的WebForm使用者认真研读。  第一部分:ASP.NET MVC3介绍 对于在微软平台上的Web开发者来说,ASP.NET MVC Framework是一个彻底的改变。框架的重点在于清晰地架构、设计模式、可...

wuyoubf 216
上一篇: 第十四章 集成Dojotoolkit(Ajax框架)
下一篇: 第二十五章 离线并发与锁机制
struts2
博客等级 码龄19年 885粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值