30个经典的jQuery代码开发技巧


Posted in Javascript onDecember 15, 2014

本文实例总结了30个经典的jQuery代码开发技巧。分享给大家供大家参考。具体如下:

1. 创建一个嵌套的过滤器

.filter(":not(:has(.selected))") //去掉所有不包含class为.selected的元素

2. 重用你的元素查询

var allItems = $("div.item");

var keepList = $("div#container1 div.item");

<div>class names: $(formToLookAt + " input:checked").each(function() { keepListkeepList = keepList.filter("." + $(this).attr("name"));

});

</div>

3. 使用has()来判断一个元素是否包含特定的class或者元素

//jQuery 1.4.* includes support for the has method. This method will find 

//if a an element contains a certain other element class or whatever it is

//you are looking for and do anything you want to them. 

$("input").has(".email").addClass("email_icon");

4. 使用jQuery切换样式

//Look for the media-type you wish to switch then set the href to your new style sheet

$('link[media='screen']').attr('href', 'Alternative.css');

5. 限制选择的区域

//Where possible, pre-fix your class names with a tag name

//so that jQuery doesn't have to spend more time searching

//for the element you're after. Also remember that anything

//you can do to be more specific about where the element is

//on your page will cut down on execution/search times

var in_stock = $('#shopping_cart_items input.is_in_stock');

<ul id="shopping_cart_items">

<li> <input value="Item-X" name="item" type="radio"> Item X</li>

<li> <input value="Item-Y" name="item" type="radio"> Item Y</li>

<li> <input value="Item-Z" name="item" type="radio"> Item Z</li>

</ul>

6. 如何正确使用ToggleClass

//Toggle class allows you to add or remove a class

//from an element depending on the presence of that

//class. Where some developers would use:

a.hasClass('blueButton') ? a.removeClass('blueButton') : a.addClass('blueButton');

//toggleClass allows you to easily do this usinga.toggleClass('blueButton');

7. 设置IE指定的功能

if ($.browser.msie) { 

// Internet Explorer is a sadist.

}

8. 使用jQuery来替换一个元素

$('#thatdiv').replaceWith('fnuh');

9. 验证一个元素是否为空

if ($('#keks').html()) {

//Nothing found ;

}

10. 在无序的set中查找一个元素的索引

$("ul > li").click(function () { var index = $(this).prevAll().length; });

11. 绑定一个函数到一个事件

$('#foo').bind('click', function() { alert('User clicked on "foo."'); });

12. 添加HTML到一个元素

$('#lal').append('sometext');

13. 创建元素时使用对象来定义属性

var e = $("", { href: "#", class: "a-class another-class", title: "..." });

14. 使用过滤器过滤多属性

//This precision-based approached can be useful when you use

//lots of similar input elements which have different types

var elements = $('#someid input[type=sometype][value=somevalue]').get();

15. 使用jQuery预加载图片

jQuery.preloadImages = function() { for(var i = 0; i').attr('src', arguments[i]); } }; 

// Usage $.preloadImages('image1.gif', '/path/to/image2.png', 'some/image3.jpg');
16. 设置任何匹配一个选择器的事件处理程序
[code]$('button.someClass').live('click', someFunction);

//Note that in jQuery 1.4.2, the delegate and undelegate options have been

//introduced to replace live as they offer better support for context 

//For example, in terms of a table where before you would use..

//

.live() $("table").each(function(){ $("td", this).live("hover", function(){ $(this).toggleClass("hover"); }); });

//Now use.. 

$("table").delegate("td", "hover", function(){ $(this).toggleClass("hover"); });

17. 找到被选择到的选项(option)元素

$('#someElement').find('option:selected');

18. 隐藏包含特定值的元素

$("p.value:contains('thetextvalue')").hide();

19. 自动的滚动到页面特定区域

jQuery.fn.autoscroll = function(selector) { $('html,body').animate( {scrollTop: $(selector).offset().top}, 500 ); }

//Then to scroll to the class/area you wish to get to like this:

$('.area_name').autoscroll();

20. 检测各种浏览器

Detect Safari (if( $.browser.safari)), Detect IE6 and over (if ($.browser.msie && $.browser.version > 6 )), Detect IE6 and below (if ($.browser.msie && $.browser.version <= 6 )), Detect FireFox 2 and above (if ($.browser.mozilla && $.browser.version >= '1.8' ))

21. 替换字符串中的单词

var el = $('#id'); el.html(el.html().replace(/word/ig, ''));

22. 关闭右键的菜单

$(document).bind('contextmenu',function(e){ return false; });

23. 定义一个定制的选择器

$.expr[':'].mycustomselector = function(element, index, meta, stack){

// element- is a DOM element

// index - the current loop index in stack

// meta - meta data about your selector

// stack - stack of all elements to loop

// Return true to include current element

// Return false to explude current element

};

// Custom Selector usage:

$('.someClasses:test').doSomething();

24. 判断一个元素是否存在

if ($('#someDiv').length) {

//hooray!!! it exists...

}

25. 使用jQuery判断鼠标的左右键点击

$("#someelement").live('click', function(e) { if( (!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1) ) { alert("Left Mouse Button Clicked"); } else if(e.button == 2) alert("Right Mouse Button Clicked"); });

26. 显示或者删除输入框的缺省值

//This snippet will show you how to keep a default value

//in a text input field for when a user hasn't entered in

//a value to replace it

swap_val = []; 

$(".swap").each(function(i){ swap_val[i] = $(this).val();

$(this).focusin(function(){ if ($(this).val() == swap_val[i]) { $(this).val(""); } }).focusout(function(){ if ($.trim($(this).val()) == "") { $(this).val(swap_val[i]); } }); }); <INPUT value="Enter Username here.." type=text>

27. 指定时间后自动隐藏或者关闭元素(1.4支持)

//Here's how we used to do it in 1.3.2 using setTimeout 

setTimeout(function() { $('.mydiv').hide('blind', {}, 500) }, 5000); 

//And here's how you can do it with 1.4 using the delay() feature (this is a lot like sleep)

$(".mydiv").delay(5000).hide('blind', {}, 500);

28. 动态创建元素到DOM

var newgbin1Div = $('');

newgbin1Div.attr('id','gbin1.com').appendTo('body');

29. 限制textarea的字符数量

jQuery.fn.maxLength = function(max){ this.each(function(){ var type = this.tagName.toLowerCase(); 

var inputType = this.type? this.type.toLowerCase() : null; if(type == "input" && 

inputType == "text" || inputType == "password"){

//Apply the standard maxLength this.maxLength = max;

} else if(type == "textarea"){ this.onkeypress = function(e){ var ob = e || event;

var keyCode = ob.keyCode;

var hasSelection = document.selection? document.selection.createRange().text.length > 0 : this.selectionStart != this.selectionEnd;

return !(this.value.length >= max &&

(keyCode > 50 || keyCode == 32 || keyCode == 0 || keyCode == 13) && !ob.ctrlKey && !ob.altKey && !hasSelection); }; 

this.onkeyup = function(){ if(this.value.length > max){ this.value = this.value.substring(0,max); } }; } }); }; 

//Usage: 

$('#gbin1textarea').maxLength(500);

30. 为函数创建一个基本测试用例

//Separate tests into modules.

module("Module B");

test("some other gbin1.com test", function() {

//Specify how many assertions are expected to run within a test. expect(2); //A comparison assertion, equivalent to JUnit's assertEquals. 

equals( true, false, "failing test" );

equals( true, true, "passing test" ); 

});

希望本文所述对大家的jquery程序设计有所帮助。

Javascript 相关文章推荐
关于javascript document.createDocumentFragment()
Apr 04 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
Dec 13 Javascript
清空上传控件input file的值
Jul 03 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
javascript中的void运算符语法及使用介绍
Mar 10 Javascript
js获取select标签选中值的两种方式
Jan 09 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
May 17 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
Apr 26 Javascript
react中的DOM操作实现
Jun 30 Javascript
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
node.js中的fs.fsync方法使用说明
Dec 15 #Javascript
innerHTML在IE中报错解决方案
Dec 15 #Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 #Javascript
node.js中的fs.fsyncSync方法使用说明
Dec 15 #Javascript
node.js中的fs.writeSync方法使用说明
Dec 15 #Javascript
node.js中的fs.write方法使用说明
Dec 15 #Javascript
node.js中的http.createClient方法使用说明
Dec 15 #Javascript
You might like
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
Python中使用glob和rmtree删除目录子目录及所有文件的例子
2014/11/21 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
浅谈python中的变量默认是什么类型
2016/09/11 Python
Python数据集切分实例
2018/12/08 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
keras获得某一层或者某层权重的输出实例
2020/01/24 Python
Python短信轰炸的代码
2020/03/25 Python
应用英语专业自荐信
2014/01/26 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
校运会通讯稿
2015/07/18 职场文书
python tqdm用法及实例详解
2021/06/16 Python
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis