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 ...
随机推荐
- VS2015 自动添加头部注释
让VS自动生成类的头部注释,只需修改两个文集即可,一下两个路径下个有一个 Class.cs文件 D:\Program Files (x86)\Microsoft Visual Studio 14.0\ ...
- TextView链接点击和长按冲突
1.重写 import android.text.Layout; import android.text.Selection; import android.text.Spannable; impor ...
- C# 读本地INI文件方法
[DllImport("kernel32")]//加载dll private static extern int GetPrivateProfileString(string se ...
- 同步、更新、下载Android Source & SDK from 国内镜像站(转载)
同步.更新.下载Android Source & SDK from 国内镜像站 转自: 同步.更新.下载Android Source & SDK from 国内镜像站 Download ...
- Leetcode Unique Paths II
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- HDU 3038 How Many Answers Are Wrong(种类并查集)
题目链接 食物链类似的题,主要是在于转化,a-b的和为s,转换为b比a-1大s.然后并查集存 此节点到根的差. 假如x的根为a,y的根为b: b - y = rank[y] a - x = rank[ ...
- sqlserver跨服务器数据库sql语句
1.启用Ad Hoc Distributed Queries:exec sp_configure 'show advanced options',1reconfigureexec sp_configu ...
- [LintCode] Delete Node in the Middle of Singly Linked List 在单链表的中间删除节点
Implement an algorithm to delete a node in the middle of a singly linked list, given only access to ...
- Android-studio开发 快捷键
这会儿正在学android开发,使用的是Android-studio 记录一下开发工具默认的 快捷键
- 【iCore3 双核心板_FPGA】实验二十六:SDRAM读写测试实验
实验指导书及代码包下载: http://pan.baidu.com/s/1c1VRibY iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...