【锋利的Jquery】读书笔记十一
项目进度太赶,天天公司加班12小时,没时间看书充电。2016年再更新一篇吧。现在凌晨2点36分。
2017加油哦
jquery合适的选择器
$("#id")
无疑是最佳提高性能的方法
如果不能直接找到你要的元素
那么可以考虑find()
$("p").find("a")
之外还有
标签选择器 $("p")
属性选择器$("[attr=value]");
$(":hidden")建议大家不要使用 性能不好,
如果要用可以这样
$("#div").find(":hidden");
缓存对象
$("#traffic_light input.on").bind()
$("#traffic_light input.on").css()
$("#traffic_light input.on").fadeIn()
导致jquery每次都要创建一个选择器 查找DOM 创建多个jqeury对象
建议
var $traffic = $("#traffic_light input.on");缓存对象
$traffic.bind().css().fadeIn();
进阶用法:
如果缓存到全局环境中
window.$my={
head:$("head"),
traffic:$("#traffic_light input.on"),
traffic_button:$("#traffic_button")
}
function do_something(){
var script = document.createElement("script");
$my.head.append(script);
$my.cool_result = $("#some_ul li");
$my.traffic_button.css("border-color","aquamarine");
}
记住永远不要让相同的选择器再你的代码中出现多次;
循环时的DOM操作
var top = [] 假如有100个独一无二的字符串
$mylist =$("#mylist");
for (var i = 0 l=top_lenght ; i <l; i++) {
top += "<li>"+top_list[i]+"</li>"
}
$mylist.append(html);
append不可以放for循环里面 top应该提前创建好
数组方式用jqeury对象
建议使用for 或 while处理 比 $.each()效果更好
var array = new Array()
for (var i = 0; i < array.length; i++) {
array[i] = i;
}
另外检测数组长度用
if($("#div").length);返回true 或false;
事件代理
动态绑定事件
$("#myTable").on("click","td",function(){
$(this).css("background","royalblue")
})
讲你的代码转换成jquery插件
(function(){
jQuery.fn.youPlug=function(){
//do smoething
return this;
}
})(jQuery)
使用join拼接字符串
var top = [] 假如有100个独一无二的字符串
$mylist =$("#mylist");
for (var i = 0 l=top_lenght ; i <l; i++) {
top[i] = "<li>"+top_list[i]+"</li>"
}
$mylist.append(top.join(""));
合理利用HTML5的Data属性
<body>
<div id="dl" data-role="page" data-last-value="43" data-options='{"name":"jack"}'></div>
<script type="text/javascript">
$("#dl").data("role") //page
</script>
</body>
扩展string对象的方法 正则表单提交
<div>
<input type="text" /><button >check</button>
</div>
<script>
$.extend(String.prototype, {
isPositiveInteger:function(){
return (new RegExp(/^[1-9]\d*$/).test(this));
},
isInteger:function(){
return (new RegExp(/^\d+$/).test(this));
},
isNumber: function(value, element) {
return (new RegExp(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/).test(this));
},
trim:function(){
return this.replace(/(^\s*)|(\s*$)|\r|\n/g, "");
},
trans:function() {
return this.replace(/</g, '<').replace(/>/g,'>').replace(/"/g, '"');
},
replaceAll:function(os, ns) {
return this.replace(new RegExp(os,"gm"),ns);
},
skipChar:function(ch) {
if (!this || this.length===0) {return '';}
if (this.charAt(0)===ch) {return this.substring(1).skipChar(ch);}
return this;
},
isValidPwd:function() {
return (new RegExp(/^([_]|[a-zA-Z0-9]){6,32}$/).test(this));
},
isValidMail:function(){
return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(this.trim()));
},
isSpaces:function() {
for(var i=0; i<this.length; i+=1) {
var ch = this.charAt(i);
if (ch!=' '&& ch!="\n" && ch!="\t" && ch!="\r") {return false;}
}
return true;
},
isPhone:function() {
return (new RegExp(/(^([0-9]{3,4}[-])?\d{3,8}(-\d{1,6})?$)|(^\([0-9]{3,4}\)\d{3,8}(\(\d{1,6}\))?$)|(^\d{3,8}$)/).test(this));
},
isUrl:function(){
return (new RegExp(/^[a-zA-z]+:\/\/([a-zA-Z0-9\-\.]+)([-\w .\/?%&=:]*)$/).test(this));
},
isExternalUrl:function(){
return this.isUrl() && this.indexOf("://"+document.domain) == -1;
}
}); $("button").click(function(){
alert( $("input").val().isInteger() );
});
</script>
最新文章
- TCP/IP中链路层的附加数据(Trailer数据)和作用
- 解决virtualbox装ghost xp装驱动时报portcls.sys蓝屏的问题
- iOS 遇到的错误总结
- linux下实现在程序运行时的函数替换(热补丁)
- UE4 执行Console Command ----ExecuteConsoleCommand
- 使用SAXReader读取ftp服务器上的xml文件(原创)
- Mybatis学习记录(六)----Mybatis的高级映射
- HDU 4004
- 结构型模式——Adapter
- Redis学习手册
- 利用纯CSS3实现超立体的3D图片侧翻倾斜效果
- Sping Boot入门到实战之入门篇(二):第一个Spring Boot应用
- Docker学习笔记 - Docker的镜像
- 覆盖ng-zorro样式(非style.scss)
- rocketmq简单消息发送
- CC3000 Arduino 连接Yeelink中文注释 示例
- 微信小程序image组件中aspectFill和widthfix模式应用详解
- javascript之动画特效
- 2018软工实践—Beta冲刺(1)
- amfphp2.1.1的使用经过