JQuery Tips

另一篇文章 JavaScript Tips

 

1. 获取span标签的值需要用text();

2. datepicker控件的‘setDate’属性可用于设置默认值;

3. 使用parseFloat转换时,如果字符串超出float的限制(无限的),将会返回Infinite或者-Infinite,此时可以用isFinite来进行判断,详情请参考此文章;

4. 如果在dialog中有server控件,需要将此dialog加到页面的form对象下,否则,server控件的事件不会被触发;具体操作如下:

    When you create the dialog, you need to move it a bit for ASP.Net, like this:

      $(".class").dialog({//options}).parent().appendTo("form");

    By default the .dialog() moves the content to just before </body> which most importantly is outsidethe <form></form>, so elements within it won't be included in the POST (or GET) to the server. If you manually move it like I have above, it'll resolve this issue.

5. 可使用html()给HTML标签添加内容,可使用append()与prepend()为当前元素添加子元素,append()是添加到最后一个子元素的位置(last child),prepend()添加到第一个子元素的位置(first child);

6. JavaScript中的字符串拼接,直接用+=,不要使用concat,因为使用concat需要创建另一个变量去接收合并后的字符串;

7. JSON.stringify()用来将json对象转为string;

8. $.parseJSON()用来将json对象转为javascript对象(即所有的key都变为属性);

9. jQuery.each(array/object, callback)与$(selector).each()不同,当对于array进行操作时,只能使用jQuery.each(array, callback);

The $.each() function is not the same as $(selector).each(), which is used to iterate, exclusively, over a jQuery object. The $.each() function can be used to iterate over any collection, whether it is an object or an array. 

11. JS Array的操作方法pop()和shift()将会分别移除Array的最后一个和第一个元素(对Array本身进行操作,不需要存储到其它元素中),返回值为被移除的那个元素;

12. JS Array的操作方法slice(start index, end index)和splice(index, length, values)可以对数组进行截取和拼接操作,slice()需要将操作结果保存到一个新的数组中,而splice是对自身的操作;

13. JS Array对象可以直接alert出来,结果显示为以逗号分隔到字符串;

14. $.getScript(url, [callback])通过GET请求载入一个javascript文件,并可在js文件成功载入后调用一个函数;

15. jQuery选择器有以下几种模糊匹配(通配符):

属性值以某字符串开始:selector[attrName^="value"];
属性值以某字符串结束:selector[attrName$="value"];
属性值包含某字符串:selector[attrName*="value"];

16. $.("#")得到的对象是jQuery对象,不能直接使用HTML DOM对象的方法,比如document.getElementbyId("").innerHTML="XXX"可以工作,$("#").innerHTML就不可以;比如File API是HTML 5 DOM对象的方法,所以 $("#").files 不能得到任何数据;

17. $("#")[0] 就可以将一个jQuery对象转换成 DOM对象,$(element)就可以将一个DOM对象转换为jQuery对象;

18. $.each(function(){});中的return true/return false操作只是用来跳出当前循环(相当于C#中的break),不能用于返回true或false值,$.each(function(){})是回调函数,返回的也是一个集合,所以在each内部不能直接return出一个值(此处与C#不同),因此想要拿到$.each()中的值时,只能按照以下写法来做:

function test(){var success = false;$(..).each(function () { if (..) { success = true;return false; //跳出循环,相当于C#中的break} });return success ; 
} 

19. 从jQuery 1.7开始,应该使用.on()方法替代.live(), .bind(), .delegate()方法, .on()可以为现有的,以及将要动态添加的元素附加事件,但是有时候为将要添加的源于附加事件时,即使使用.on()也可能不起作用,比如: $(".jstree-icon").on(“click”,function(){...}); 这时可以更改一下写法,使用以下方式:

//jstree is the id of parent element, all nodes including that which will be generated later have a class name jstree-icon$("#jstree").on("click",".jstree-icon",function(){});

20. insertBefore(newChild,existingChild),例:oParentNode.insertBefore(newNode,oParent.childNodes[0]);

21. children()方法只能查找当前元素的下一级子元素中的内容,但find()方法可以查找当前元素的所有子元素中的内容;

22. jquery.data()方法是为了HTML5 dataset属性设置的,用于获取或设置HTML5中自定义的属性(data-*)值,可以参考此文章,但是,jQuery是通用的,即在非HTML5页面仍然可以使用.data(*)来获取对象的data-*属性,此处有以下几点需要注意:

(1) .data(key,value) 和 .data(key)中的 key值是 大小写敏感的;

(2) 如果是用 .data(key, value) 动态生成的data-*属性,则key值区分大小写;

(3) 如果是直接写在html结构中的,例如:<tr data-childNodes="A"></tr>,由于html在生成页面时会将所有标签、属性变为小写,则在获取值时,应该使用全小写的格式,例如:.data("childnodes");

(4) 其实就是看生成后的HTML页面中,data-*属性是大写还是小写,由于动态添加的data-*属性是在 html生成之后,所以保留了本身的大小写,直接写在HTML结构中的data-*属性是在HTML生成之前写的,所以都会自动转为小写格式;

23. 与trigger()相比,triggerHandler()方法不会触发事件的默认行为(也就是说并不会真正地触发这个事件),只会执行事件的内容;

24. jQuery中有三种判断checkbox选中与否的方法:详见此页;

.attr(‘checked’):   //看版本1.6+返回:”checked”或”undefined” ;1.5-返回:true或false
.prop(‘checked’): //16+:true/false
.is(‘:checked’):    //所有版本:true/false//别忘记冒号哦

25. jQuery中对于true/false类型的属性,建议使用prop,而非attr;

26. jQuery的toggleClass()方法可以添加多个class作为参数,但是,这里面是有一个隐藏的操作:如果element一开始就含有类A,那么使用 $(element).toggleClass("A B") 时,第一次操作会移除类A,添加类B,第二次操作时就会添加类A,移除类B;

<div class="col-xs-12 article-wrapper"></div>//-------------------JS--------------------------
$(".article-wrapper").toggleClass("bloc col-xs-12 col-xs-4"); //第一次操作,会移除col-xs-12,添加bloc 和 col-xs-4;第二次操作,会移除 bloc 和 col-xs-4,添加 col-xs-12;由于 artible-wrapper类 用于绑定,所以不会被移除;

27. $.each(function(index, item){});中的index是从0开始;

28. 向ajax的回调函数中添加额外的参数时,可以使用如下方法,这同时也是一个jQuery调用SharePoint Web Service的例子:

//call web service to get Person objectsfunction callPersonWebService(userId, itemId){var soapEnv =  "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><Person xmlns='http://XXX.ColXXXX'><username>"+userId+"</username></Person></soap:Body></soap:Envelope>";  $.ajax({  url: url_webService, type: "POST",  dataType: "xml",  data: soapEnv,  complete: function(jqXHR, textStatus){processPersonResult(jqXHR, textStatus, itemId)},  contentType: "text/xml;charset=\"utf-8\""});    }//get Person object and pass it to updateFISContact functionfunction processPersonResult(xData, status,itemId) { var result = xData.responseXML;try {  if (status == "success" && result){  var $responseXMLObj = $(result);updatedItemArr.push($responseXMLObj); //push all Person object to an array$("#objectsFromWebService").text("Objects from web service: "+updatedItemArr.length);updateFISContact($responseXMLObj, itemId);}    }  catch(e) {  alert(e);  }  }  

29. ajax中,data指的是发送到服务器端的数据;dataType属性指示了客户端接收到的数据类型contentType指示了发送到服务器端到数据类型如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:

"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含 script 元素。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

30. ajax的调用是异步的,如果想要在其它方法中使用ajax的返回值,则不能简单地进行赋值或者return给其它方法,需要在success函数或者done函数中进行后续操作;

常见的错误写法如下:

function checkUniqueRoleAssignment(restURI) {var result = false;$.ajax({url: restURI,type: "GET",headers: { "Accept": "application/json;odata=verbose" },success: function (data) {if (data.d) {result = data.d.HasUniqueRoleAssignments; //true or false
            }},error: function (xhr) {//do nothing
        }});return result;
}

此种写法导致的结果是,每次都会返回false,因为在ajax尚未返回 data 时,return result 已被执行了;

正确的写法为:

function checkUniqueRoleAssignment(restURI) {return $.ajax({url: restURI,type: "GET",headers: { "Accept": "application/json;odata=verbose" }});
}//调用时
checkUniqueRoleAssignment(uniquepermissionURI).done(function(data){if (data.d) {var result = data.d.HasUniqueRoleAssignments; //true or false//to do next
        }
});

31. 

 

 

 

转载于:https://www.cnblogs.com/qijiage/p/3191767.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重磅突发!全球首富40颗卫星遭摧毁

来源&#xff1a;中国基金报在上周最新发射的49颗卫星中&#xff0c;有40颗卫星遭地磁风暴“摧毁”——全球首富、特斯拉CEO马斯克旗下SpaceX公司的星链计划遭遇挫折。此外&#xff0c;美国国家航空航天局(NASA)、亚马逊均表示&#xff0c;对于SpaceX星链计划还要新部署约3万颗…

扩散模型就是自动编码器!DeepMind研究学者提出新观点并论证

来源&#xff1a;明敏 发自 凹非寺量子位 | 公众号 QbitAI由于在图像生成效果上可以与GAN媲美&#xff0c;扩散模型最近成为了AI界关注的焦点。谷歌、OpenAI过去一年都提出了自家的扩散模型&#xff0c;效果也都非常惊艳。另一边&#xff0c;剑桥大学的学者David Krueger提出&a…

2019已悄然过半

2019过半&#xff0c;不知不觉已进入秋天&#xff0c;今年上海夏天格外凉爽&#xff0c;没感觉热就结束了。上半年总体感觉归于平淡&#xff0c;但是平平淡淡才是真嘛。年初制定的个人计划基本完成&#xff0c;关键是难度系数都不高&#xff0c;下半年有两项重要考核正在等着&a…

关于欧盟的芯片法案,ASML是这样看的!

来源&#xff1a;光电汇OESHOW近日&#xff0c;欧盟发布了一个芯片法案&#xff0c;ASML随后便公开表示了他们对这个答案的看法。内容如下&#xff1a;塑造我们生活的智能互联世界的全球大趋势正在推动对微芯片的需求显著增长。最近的芯片短缺凸显了复杂的全球半导体生态系统中…

day29 socket编程TCP和UDP

1 发送大文件 2 UDP基本使用 3 UDP实现建议版本的QQ 4 TCP与UDP之间的区别 5 socketserver模块 6 异常处理 1 发送大文件 通过客户端上传大文件到服务端 服务端 import socket import json import structserver socket.socket() server.bind((127.0.0.1, 8080)) server.liste…

万字长文!DeepMind科学家总结2021年的15个高能研究

来源&#xff1a;新智元2021年ML和NLP依然发展迅速&#xff0c;DeepMind科学家最近总结了过去一年的十五项亮点研究方向&#xff0c;快来看看哪个方向适合做你的新坑&#xff01;最近&#xff0c;DeepMind科学家Sebastian Ruder总结了15个过去一年里高能、有启发性的研究领域&a…

编程书籍

计算机书籍控 http://bestcbooks.com/recommend/most-influential-book/ 转载于:https://www.cnblogs.com/water-bear/p/11325111.html

情人节特刊| 爱的神经机制

来源&#xff1a;浙江大学学术委员会文&#xff1a;周炜1在哺乳动物的物种中&#xff0c;仅有不到10%的物种能够形成基于一夫一妻制的配对关系。随着时间的推移&#xff0c;通过选择性地寻找伴侣和与伴侣互动&#xff0c;夫妻关系得以维持和加强。大多数实验室啮齿动物包括大小…

应用安全 - 渗透测试 - .net网站

注入 注入 单引号检测 - 多数使用MSSQL数据库常规注入绕过 "or | or oror | oror" 上传 加图片头GIF89A 转载于:https://www.cnblogs.com/AtesetEnginner/p/11327462.html

为了自动驾驶,谷歌用NeRF在虚拟世界中重建了旧金山市

来源&#xff1a;机器学习研究组订阅真不用来做成元宇宙&#xff1f;训练自动驾驶系统需要高精地图&#xff0c;海量的数据和虚拟环境&#xff0c;每家致力于此方向的科技公司都有自己的方法&#xff0c;Waymo 有自己的自动驾驶出租车队&#xff0c;英伟达创建了用于大规模训练…

day30 并发编程

大文件上传思维逻辑 服务端 # 1.socket创建TCP服务 # 2.连接循环 # 3.通信循环接受固定长度的字典的报头解析获取字典数据的真实长度接受字典数据 解码 反序列化成字典从字典中获取文件大小 以及文件名等其他信息 # 4.循环接受文件数据文件操作(wb) 接受一行往文件中写入一行 客…

人工智能可以自己编码?2022年这8个人工智能趋势值得关注!

来源&#xff1a;产业大视野译者&#xff1a;Sambodhi1. AI-on-5G2022 年&#xff0c;工业 AI 和 AI-on-5G 物联网应用将会成为主流。想象一下&#xff0c;当我我以元宇宙为目标的时候&#xff0c;我们对物理空间的升级方式同样令人印象深刻。AI-on-5G 组合计算基础设施为传感器…

通过OracleDataReader来读取BLOB类型的数据

在实际的应用过程中&#xff0c;需要把大块的二进制数据存储在数据库中。读取这些大块的数据&#xff0c;可以通过强制类型转换成为byte数组&#xff0c;但是当这个二进制数据体够大时&#xff08;几十兆或者上百兆&#xff09;&#xff0c;一次并不能获取到他的完整长度&#…

完美的优化目标,人工智能的盲点

来源&#xff1a;AI科技评论译者&#xff1a;辛西娅编辑&#xff1a;维克多人工智能&#xff08;AI&#xff09;系统的脆弱性一直被行业人员所诟病&#xff0c;稍微的数据错误就会使系统发生故障。例如在图像识别中&#xff0c;图片微小的像素改变&#xff0c;不会干扰人类视觉…

C#中创建对象的方式

C#中对象创建的方式 使用new 创建使用对象的MemberwiseClone使用工厂方法创建使用序列化和反序列化创建使用反射创建使用类型推导&#xff08;c# 3.0&#xff09; 另外c# 3.0 中增加了一种类型扩展方法。 转载于:https://www.cnblogs.com/zzj8704/archive/2008/08/05/1260848.h…

转:Some interesting facts about SharePoint 2007 Search

Some interesting facts about SharePoint 2007 Search Published 14 November 08 06:21 PM | harikumh Can we search in any language other than English? Do we need language pack for the same? Language Pack has nothing to do with search in languages other th…

宇宙和世界真的是虚拟的吗?

来源&#xff1a;数学中国 2021年元宇宙无疑成为科技领域最火爆的概念之一&#xff0c;扎克伯格曾表示未来脸书将从一家社交媒体公司转变为一家元宇宙公司&#xff0c;之后元宇宙这个词席卷了整个互联网与投资圈。在大多数人还搞不懂元宇宙是什么的时候&#xff0c;科技公司们已…

Web高效管理多个项目的SVN仓库

转至:https://www.jianshu.com/p/a0af00642585 采用方案 LinuxApacheSubversionMySQLJDKTomcatSvnadmin 目录 0.安装准备 0.1 升级系统软件包 0.2 关闭SELinux 0.3 安装wget 1.部署Apache 1.1 安装apache 1.2 修改配置文件 1.3 启动apache服务 1.4 调整防火墙&#xff0c;允许8…

粒子物理学有了新的基础数学理论

来源&#xff1a;科技日报科技日报柏林2月13日电 &#xff08;记者李山&#xff09;近日&#xff0c;来自奥地利和英国的科学家共同发表了一个粒子物理学的基础数学新理论。他们定义和研究了黎曼曲面上存在的非常稳定的希格斯丛&#xff0c;其蕴涵了全局幂零锥稳定分量的多重性…

01.MyBatis入门

MyBatis入门&#xff1a; 第一天接触Mybatis&#xff0c;总结一下入门案例的流程: 首先导入Mybatis的jar包和数据库的驱动包 1.创建数据表和实体类 2.创建一个表和实体类映射的xml配置文件&#xff0c;具体配置如下&#xff1a; 1 <?xml version"1.0" encoding&q…