首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >jquery菜鸟:如何在同一个DOM元素上高效地执行多个操作?

jquery菜鸟:如何在同一个DOM元素上高效地执行多个操作?
EN

Stack Overflow用户
提问于 2009-12-11 17:12:12
回答 6查看 11.7K关注 0票数 14

我最近了解到(在stackoverflow:))在每次我编写代码时使用jquery

代码语言:javascript
运行
AI代码解释
复制
$("...")

执行DOM搜索以定位匹配的元素。我的问题很简单:如何有效地对使用jquery定位的DOM元素执行一系列操作(使用jquery对象的优秀方法)?目前,我正在做(例如):

代码语言:javascript
运行
AI代码解释
复制
var previousHtml = $("#myDiv").html();
$("#myDiv").addClass("tangoClass");
$("#myDiv").html("bla bla bla");
//...

基本上,我总是通过写$("#myDiv")来引用元素。如何以有效的方式重复操作DOM元素(使用jquery函数,而不是普通Javascript)?下面的内容可以避免代价高昂的DOM搜索吗?

代码语言:javascript
运行
AI代码解释
复制
var myDiv = $("#myDiv");
var previousHtml = myDiv.html();
myDiv.addClass("tangoClass");
myDiv.html("bla bla bla");

或者我应该尝试尽可能多地链接jquery调用,例如:

代码语言:javascript
运行
AI代码解释
复制
var previousHtml = $("#myDiv").addClass("tangoClass").html(); //saves me 1 $("#myDiv") call
$("#myDiv").html("bla bla bla");

感谢你的见解。:)

劳拉

EN

回答 6

Stack Overflow用户

发布于 2009-12-11 19:55:21

我也同意链接是最好的方法,但这里没有人提到的是在链接时使用.andSelf()(1)和.end()(2)。

下面的代码将“边框”类添加到其中包含的divp中。

代码语言:javascript
运行
AI代码解释
复制
$("div").find("p").andSelf().addClass("border");

使用.end()“重置”选择器

代码语言:javascript
运行
AI代码解释
复制
$("div")
  .find("p").addClass("myParagraph").end()
  .find("span").addClass("mySpan");

更新:.andSelf()已被弃用,本质上已重命名为.addBack(),请以相同的方式使用它。

票数 13
EN

Stack Overflow用户

发布于 2009-12-11 17:18:04

每次使用jQuery函数时,它都会返回初始查询中的完整jQuery对象。这使您可以将操作链接在一起,因此实际的查询只在第一次发生。

从您的示例来看,您似乎从未使用过previousHtml,所以您根本不需要使用它。我认为你可以这样做:

代码语言:javascript
运行
AI代码解释
复制
$("#myDiv").html('bla bla bla').addClass('tangoClass');
票数 2
EN

Stack Overflow用户

发布于 2009-12-11 17:26:21

这取决于您对该元素调用了哪些函数,因为并非所有函数都会返回DOM元素。但是,如果您必须调用的所有函数都将始终返回DOM元素,那么它肯定会使您的代码更具可读性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1889474

复制
相关文章
搞定侧边栏TAB选项卡
竖着排列确实会在网速卡的时候,随机日志,最新日志,热评日志会连在一起显示30篇文章,太不美观了。
空空裤兜
2023/03/03
1.2K0
微信小程序----导航栏选项卡(MUI顶部选项卡)
效果图 WXML <import src="../../template/list.wxml"/> <view class="tui-tabbar-content"> <view class="
Rattenking
2021/02/01
1.7K0
微信小程序----导航栏选项卡(MUI顶部选项卡)
Android应用底部导航栏(选项卡)实例
现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能。 我们先看下该demo实例的框架图: 其
欢醉
2018/01/22
1.5K0
Android应用底部导航栏(选项卡)实例
iOS小技巧·把子视图控制器的视图添加到父视图控制器
把子视图控制器的视图添加到父视图控制器并覆盖 添加子控制器 #pragma mark - 添加子控制器 - (void)addSubControllers{ [self addChildViewController:_childViewController]; [self.view addSubview:_childViewController.view]; [_childViewController.view mas_makeConstraints:^(MASConstraintMaker
陈满iOS
2018/09/10
1K0
如何将WebRTC播放协议添加到EasyCVR?
自2020年浏览器的发展和兼容性发生了变化,WebRTC的延时性、安全性得到了提升和保护,尤其是疫情爆发后,实时视频的需求比之前增长了30倍,这更刺激了WebRTC产品的持续快速发展。因此我们也在EasyGBS、EasyDSS等平台内实现了WebRTC协议的播放。
TSINGSEE青犀视频
2021/11/23
1.6K0
使用SWRevealViewController实现侧滑菜单
结果如图,这里要注意一个问题,就是指向第一个显示ViewController的箭头 指向了SWRevealViewController; 因为我在实际开发中发现不指向这个ViewController 侧滑菜单不出现,不知道是什么原因 
xiangzhihong
2022/11/30
1.1K0
iOS结合导航控制器和标签栏控制器
– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
全栈程序员站长
2022/07/06
6190
在 CentOS 上如何将用户添加到 Sudoers
sudo是一个命令行工具,它被设计为允许用户以其他用户(默认是 root 用户)身份去运行命令。
雪梦科技
2020/05/11
11.7K0
在 CentOS 上如何将用户添加到 Sudoers
在 Debian 中如何将用户添加到 Sudoers
sudo是一个命令行工具,它允许被信任用户以另外一个用户身份运行命令,默认是 root 用户。
雪梦科技
2020/05/11
12.8K0
在 Debian 中如何将用户添加到 Sudoers
在 Ubuntu 中如何将用户添加到 Sudoers
sudo是一个命令行程序,它允许被信任的用户以 root 或者其他用户身份去运行命令。
雪梦科技
2020/05/09
35.2K0
在 Ubuntu 中如何将用户添加到 Sudoers
如何把Sublime Text添加到右键菜单栏
对windows系统来说,由于系统机制的问题,很多问题通过修改注册变文件就可以解决,这个问题也不例外;
萌海无涯
2019/11/11
2.2K0
如何把Sublime Text添加到右键菜单栏
zabbix 5.0如何将esxi6.7添加到监控
今天有个需求,需要将一台esxi 6.7 server添加到我们的zabbix监控服务器上,将我做的操作踩的一点坑写出来
姚华
2022/06/29
1.9K0
zabbix 5.0如何将esxi6.7添加到监控
如何将来自 Chrome 网络选项卡的请求复制到 Postman?
你有没有想过是否有一种快速的方法将端点调用从你的DevTools 网络选项卡复制到Postman中?
点火三周
2022/04/22
3.7K0
iOS开发UI篇--一个侧滑菜单SlidingMenu
侧滑菜单已经成为app一个极常用的设计,不管是事务类,效率类还是生活类app。侧滑菜单因Path 2.0和Facebook为开发者熟知,国内目前也有很多流行app用到了侧滑菜单,比如QQ、网易邮箱、知乎等等。 IOS官方并没有提供类似于侧滑栏之类的组件,所以我们需要自己写一个侧滑栏控件,为了不要重复造轮子,我在github上找到了一个使用简单方便,新手容易入手的侧滑菜单控件,Demo下载地址:这是一个我的iOS交流群:624212887,群文件自行下载,不管你是小白还是大牛热烈欢迎进群 ,分享面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。
楚阳
2018/12/13
1.3K0
如何将用户添加到Linux桌面【Linux-Command line】
我在 useradd command 上发布的文章阐述了对Linux系统用户管理的深层理解。Useradd 是一个命令行工具,但你也可以在Linux上通过图形方式管理用户。这就是本文主旨。
QRosie
2019/11/12
4.9K0
如何将用户添加到Linux桌面【Linux-Command line】
如何将Alexa添加到Raspberry Pi(或任何Linux设备)
我们的Amazon Alexa虚拟设备项目旨在提供将Alexa添加到任何Linux设备(包括Raspberry Pi板等嵌入式系统)的功能。
用户4122690
2020/03/14
1.6K0
如何将Alexa添加到Raspberry Pi(或任何Linux设备)
Cocoa编程中视图控制器与视图类详解
iPhone编程规则是:一个窗口,多个视图。UIView是iPhone屏幕上很多控件的基础类。每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊的UIView)内的众多UIView及其专门化子类构建的。 显示数据的视图: UITextView UILabel UIImageView UIWebView MKMapViews UIScrollView 可选择的视图(以下两个视图类实例都是模态显示的): UIAlertView UIActionSheet  所有控件(控件是将用户触摸转换为回
猿人谷
2018/01/17
5.3K0
Cocoa编程中视图控制器与视图类详解
AI应用:SAP和MapR如何将AI添加到他们的平台
SAP正在将AI嵌入到应用程序中;MapR同样将AI嵌入到其数据平台上。在这两种情况下,AI变得更加普遍,同时也更方便。 有时候,当我们写关于分析、机器学习和AI的时候,提出具体的用例是很有挑战性的。
AiTechYun
2018/03/02
1.9K0
AI应用:SAP和MapR如何将AI添加到他们的平台
Nexus高级配置之如何将本地jar添加到Nexus中
Java后端技术所推送文章,为本人原创、网上收集或其他作者投稿,对于网上收集部分除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们,我们会在24小时内删除处理,谢谢!^_^ QQ:1573876303。
Java后端技术
2018/08/09
2.9K0
Nexus高级配置之如何将本地jar添加到Nexus中
点击加载更多

相似问题

SWRevealViewController为frontView隐藏navigationBar

21

frontView在SWRevealViewController中的修改框架

12

SWRevealViewController隐藏选项卡栏控制器

10

SWRevealViewController使侧边栏按钮成为静态按钮&使rearView显示在frontView的顶部

10

当用户在SWRevealViewController中时,frontView停止点击手势

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档