jquery使用注意点以及建议
jquery是一个非常优秀的js框架,相信大部分人都用过,也都非常熟悉它的应用,用起来也非常简单,基本的操作也都不用说了。这里不在罗列jquery的api,总结下需要注意的点,都是平时容易犯错误的地方,分享下,感觉还有比较有价值的,具体内容如下:
一、ajax相关:
$.ajax({ type : "post", url : "XXX.action", //data : 'name=John&location=china' data : {name:John, location:china}, dataType : "json", async : false, success : function(data) { } });
1.data两种参数的用法区别
①一种时参数值为特殊情况时(值本身含有字符'&'): 例如 name=John&John2, data就变成了'name=John&John2&location=china' ,这时数据传到后台可能会得到不可预知的结果。
②正常情况下,也就是参数的值不带有特殊字符 ‘&’,有时也会出现“参数接收不到或不完整”的情况,具体原因我也清楚,这个确实亲身经历过,代码什么的都没有问题,到了后台有个参数就是传不过去,所以结论就是使用第二种写法较好:data : {name:John, location:china},从来没有出现过参数丢失的情况,而且容错性也强。
2.async同步方式:true or false ?
①如果需要等待ajax的执行结果,用false,否则永远得不到正确的结果。原因很简单,如果不用false,代码会直接往下执行,这时ajax的值还没返回过来,程序没有按照想象的顺序执行,结果也就可想而知了。
②如果不需要等待ajax的执行结果最好用true,因为采用“同步的方式”(async=false)时页面会处于“假死”状态,用户看起来就是“卡住”了, 特别是假死次数太多时,体验不佳(ajax不要滥用,能在后台做的工作就在后台做,特别是一些初始化的工作)。
3.dataType:一般我们的返回值类型都是“json”,这个一定要写,并且写正确,(即便后台指定了HTTP包MIME类型) 曾经犯过一个错误,将返回值错写成“html”,结果总是取不到自己想要的值,最后将返回值一打印,发现是包含 HTTP信息的一大堆信息,好像就是一个页面HTML代码,这时想到(ajax本就是一个HTTP请求)。
4.总结,要养成良好习惯,不管你的ajax多么简单,这个5个最基本的参数都带上,并且根据自己的情况将参数值写正确。
二、小知识:
1.jquery选择器返回的永远是个数组,也正因为如此,通过id选择的元素不存在也不会报错,但我们不能因为不报错写代码时就可以随意写,如果不确定元素是否存在,取时最好还是要做“非空”判断,示例:
if ($("#btn1").length > 0) { //主体代码 }
2.页面上有多个id或者name一样的元素时,如果取?一般是通过“相对路径”来取,因为如果要取值,总要由一些“事件”触发,如果点击了某个按钮,那么就以此按钮为出发点往上找或者往下找,常用的函数:
parent : 取父节点元素
child : 取子节点元素
prev : 取兄弟节点(同级)的前一个
next : 取兄弟节点(同级)的前一个
一个例子:购物车展示页面,一个table里很多组商品,每组可以单独结算,也就是都有结算“按钮”,而本组商品的某个位置度有个隐藏的元素,他们的name是一样的,这时可以这么取值:
$(this).parents("tr").prev().find("td").find("input[name='activecode']").val();
意思为从结算按钮前一行的某列中找到名字为activecode的元素的值,这里的“td”如果能确定的话后面还可以加上eq(索引值)。
3.取没有id的元素(有时候有些元素是没有id的,往往都是些list,如果自己的不好加或者不想加id,又或者不能加) 我遇到过这样一种情况,页面上有一个li集合,他们的值都来自定义好的集合A,手里有些数据A1也来自A,A1中的数据也能在页面li中出现,也可能没有。需求是A1中的值,li集合中也同时出现的做些样式调整,li中的任何元素都没有id,只有外面的ul有id。在这种“极端条件下”,还有
最后的办法,就是循环li,然后通过值相等判断。(也就说只要遇到取值,就要有循环,代码写出来非常臃肿,不过真没有办法了,也只能这样)
$(li集合).each(function(){ // 主体代码 });
jquery使用注意点以及建议的更多相关文章
- Jquery学习笔记--性能优化建议
一.选择器性能优化建议 1. 总是从#id选择器来继承 这是jQuery选择器的一条黄金法则.jQuery选择一个元素最快的方法就是用ID来选择了. 1 $('#content').hide(); 或 ...
- jQuery:jQuery性能优化28条建议
http://www.xue5.com/WebDev/jQuery/671700.html 直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将 ...
- 手把手带你快速入门jQuery(视频|资料,建议收藏!)
jQuery是什么? jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架). jQuery设计的宗旨是 ...
- 10条建议帮助你创建更好的jQuery插件
本文总结了帮助你创建更好jQuery插件的10条建议.分享给大家供大家参考.具体说明如下: 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就 ...
- jQuery对象和DOM对象的区别
jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...
- JavaScript和JQuery好书推荐
其实无论你是php/python/java还是c/c++,只会自己那点知识是无法独立完成一个站点的建设的! 如果你因自己能力不足拒绝过几次亲友的建站请求,或者因合作中不了解前端是什么东西而失去过几次创 ...
- DOM对象与jquery对象有什么不同
jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...
- Jquery day01
day01: 基础--选择器.属性和CSS.文档处理 day02: 高级--筛选.事件.效果.ajax jQuery介绍 JS类库 JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用 ...
- DOM对象与jquery对象的区别
jQuery对象和DOM对象使用说明,需要的朋友可以参考下. 1.jQuery对象和DOM对象 第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQue ...
随机推荐
- Caffe初试(三)使用caffe的cifar10网络模型训练自己的图片数据
由于我涉及一个车牌识别系统的项目,计划使用深度学习库caffe对车牌字符进行识别.刚开始接触caffe,打算先将示例中的每个网络模型都拿出来用用,当然这样暴力的使用是不会有好结果的- -||| ,所以 ...
- iOS开发 iOS10推送必看(基础篇)
iOS10更新之后,推送也是做了一些小小的修改,下面我就给大家仔细说说.希望看完我的这篇文章,对大家有所帮助. 原文链接 一.简单入门篇---看完就可以简单适配完了相对简单的推送证书以及环境的 ...
- SqlServer按时间自动生成生成单据编号
SET @_tmpDateTime = GETDATE() EXEC dbo.Dtw_Common_GenerateProofCode @ProofType = 'SO',@WhsCode=@WhsC ...
- C#学习笔记---Dispose(),Finalize(),SuppressFinalize
http://www.cnblogs.com/eddyshn/archive/2009/08/19/1549961.html 在.NET的对象中实际上有两个用于释放资源的函数:Dispose和Fina ...
- 标准模板库(STL)的一个 bug
今天敲代码的时候遇到 STL 的一个 bug,与 C++ 的类中的 const 成员变量有关.什么,明明提供了默认的构造函数和复制构造函数,竟然还要类提供赋值运算符重载.怎么会这样? 测试代码 Tes ...
- 【django】京东等大型网站的混合搜索是怎么实现的?
混合搜索在各大网站如京东.淘宝都有应用,他们的原理都是什么呢?本博文将为你介绍它们的实现过程. 混合搜索的原理,用一句话来说就是:关键字id进行拼接. 混合搜索示例: 数据库设计: 视频方向: cla ...
- 转载--PayPal高级工程总监:读完这100篇论文 就能成大数据高手
http://www.csdn.net/article/2015-07-07/2825148
- poj 1141 Brackets Sequence (区间dp)
题目链接:http://poj.org/problem?id=1141 题解:求已知子串最短的括号完备的全序列 代码: #include<iostream> #include<cst ...
- HDU3333 Turing Tree(线段树)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=3333 Description After inventing Turing Tree, 3x ...
- Unity Standard Assets 简介之 CrossPlatformInput
这篇介绍跨平台输入工具包CrossPlatformInput,主要包括 Prefabs 和 Scripts 两个文件夹: 由于该包中的脚本联系比较紧密,都是配合着去实现特定的功能,没有太大的独立可重用 ...