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 相关文章推荐
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
Jun 14 Javascript
EasyUI中combobox默认值注意事项
Mar 01 Javascript
javascript中call和apply的用法示例分析
Apr 02 Javascript
在JavaScript中对HTML进行反转义详解
May 18 Javascript
JavaScript 字符串常用操作小结(非常实用)
Nov 30 Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 Javascript
Vue.js仿Metronic高级表格(一)静态设计
Apr 17 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
Jun 17 Javascript
微信小程序实现手势滑动卡片效果
Aug 26 Javascript
layui下拉框获取下拉值(select)的例子
Sep 10 Javascript
JavaScript中window和document用法详解
Jul 28 Javascript
详解datagrid使用方法(重要)
Nov 06 Javascript
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脚本中include文件出错解决方法
2008/11/20 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
php异常处理技术,顶级异常处理器
2012/06/13 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
php身份证号码检查类实例
2015/06/18 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
简单谈谈Python中函数的可变参数
2016/09/02 Python
python如何实现int函数的方法示例
2018/02/19 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
Python函数装饰器原理与用法详解
2019/08/16 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
授权委托书
2014/09/17 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
Java内存模型之happens-before概念详解
2021/06/13 Java/Android
python如何读取和存储dict()与.json格式文件
2022/06/25 Python