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 objects
function 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 function
function 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.
JQuery Tips的更多相关文章
- jquery tips简易使用方法 新手必看
使用jquery1.12.4以上版本 使用jquery插件 tips .beg-pull-right 点击时的选择器 在这里写的是一个类选择器 记得引入jquery $(".beg-pu ...
- jquery提示信息 tips
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- $("#loginname").tips和jQuery中 的ajax
jquery tips 提示插件 jquery.tips.js v0.1beta: 使用方法 $("#loginname").tips({ //#loginname为jquery的 ...
- 12个JQuery小贴士
返回顶部 使用JQuery的 animate 和 scrollTop 方法可以创建简单地返回顶部的动画: // Back to top $('a.top').click(function (e) { ...
- 人人必知的10个jQuery小技巧
收集的10个 jQuery 小技巧/代码片段,可以帮你快速开发. 1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而不需要使用其他插件. // Back t ...
- 26个jQuery使用小技巧(25)
下面列出了一些Jquery使用技巧.比如有禁止右键点击.隐藏搜索文本框文字.在新窗口中打开链接.检测浏览器.预加载图片.页面样式切换.所有列等高.动态控制页面字体大小.获得鼠标指针的X值Y值.验证元 ...
- 封装两个简单的Jquery组件
Jquery给我们提供了很大的方便,我们把他看成是一个公共库,以致在这个公共库上延伸出了很多Jquery插件:在项目过程中,有些插件总是不那么令人满意: 主要说两个项目用途: 1. 遮罩层,跟一般的 ...
- 关于jquery插件模板的两个案例
/** * jquery tips 提示插件 jquery.tips.js v0.1beta * * 使用方法 * $(selector).tips({ //selector 为jquery选择器 * ...
- sdcms留言提交
引入这两个js <script src="{webroot}lib/validator/jquery.validator.js"></script>< ...
随机推荐
- echart在jsp中使用另外的方法
var chartOutChar = null; var option1 = { tooltip: { trigger: 'axis' }, toolbox: { feature: { dataVie ...
- adminlte+layui框架搭建3 - layui弹出层
在amdinlte首页引入layui.js 和layui.css后添加代码 <script> layui.use(['layer'], function () { var layer = ...
- Android 开源项目使用指南
1.日历项目 https://blog.csdn.net/iamchan/article/details/81214498
- 非阻塞模式ServerSocketChannel 聊天室服务器端
import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import ja ...
- QDU_AP协会18级ST1
A - A + B Problem II I have a very simple problem for you. Given two integers A and B, your job is t ...
- URAL - 1146
从来不会DP的家伙终于要开始重拾DP了 最大子矩阵没啥好说的,注意单调最大子矩阵不用这么高复杂度,另行更新 #include<bits/stdc++.h> #define rep(i,j, ...
- MITK 手册
可怜这么有用的开源竟然没有中文手册, MITK Plugin Manuals Overview The Basic Image Processing Plugin The DataManager ...
- Notepad++中F3直接搜索选中文字
用了Notepad++好久了,一直被"F3不能直接搜索选中文字"困扰.毕竟以前习惯UltraEdit的这种操作,很便捷.今天突然发现原来Notepad++快捷键里可以修改这个功能, ...
- python数组(列表、元组及字典)
python数组的使用 2010-07-28 17:17 1.Python的数组分三种类型: (1) list 普通的链表,初始化后可以通过特定方法动态增加元素. 定义方式:arr = [元素] (2 ...
- pandas.read_csv()函数读取文件时,关于“header=None”影响读取列数区间的右闭合总结
对于一个没有字段名标题的数据,如data.csv 1.获取数据内容.pandas.read_csv("data.csv")默认情况下,会把数据内容的第一行默认为字段名标题. imp ...