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

本文实例总结了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程序设计有所帮助。

(0)

相关推荐

  • Web前端新人笔记之jquery入门心得(新手必看)

    本章将为大家介绍以下几点内容: 1.jquery的主要特点: 2.建立jquery的编码环境: 3.简单jquery脚本示例: 4.选择jquery而不是纯javaScript的理由: 5.常用的jquery开发工具:jquery能做什么? ① 取得文档中的元素 $('div.content').find('p'); ② 修改页面的外观 $('ul > li:first').addClass('active'); ③ 改变文档内容 $('#container').append('<a href

  • php+jquery编码方面的一些心得(utf-8 gb2312)

    php 文件应存为ANSI,要改编码时可用代码调. 复制代码 代码如下: //编码为gb2312,目前大部分网页还是用gb2312,少部分用utf-8, //www.baidu.com竟然两个都用,所以读取baidu的网页怎么搞都没问题 header('Content-Type: text/html; charset=gb2312'); //编码为utf-8 header('Content-Type: text/html; charset=gb2312'); //编码xml为utf-8,不过好像

  • jQuery 研究心得 取得属性的值

    如何取得属性的值? Html: <div Bruce="Yes">sss</div> 取得属性自定义属性 Bruce 的值: alert($("div[@Bruce]").attr("Bruce")); 取得属性Bruce为Yes的Div的内容: alert($("div[@Bruce]").html()); alert($("div[@Bruce=Yes]").html());

  • 关于Jqzoom的使用心得 jquery放大镜效果插件

    下面是完整的代码 jqzoom打包下载地址 复制代码 代码如下: <html> <head> <title>JQzoom Demo</title> <script src="../js/jquery-1.3.2.min.js" type="text/javascript"></script> <script src="../js/jqzoom.pack.1.0.1.js"

  • 60个很实用的jQuery代码开发技巧收集

    由于内容比较多建议用CTRL+F搜索 偶然在网上看到这些不错的jQuery代码开发技巧.原文收集了30个,另外查找的时候发现了还有20个.加上另外十个实用的jQuery代码片段,共60个代码技巧,收集在一起分享给大家. 1. 创建一个嵌套的过滤器 .filter(":not(:has(.selected))") //去掉所有不包含class为.selected的元素 2. 重用你的元素查询 var allItems = $("div.item"); var keep

  • jQuery 使用个人心得

    $("标签名") //取html元素 document.getElementsByTagName("") $("#ID") //取单个控件document.getElementById("") $("div #ID") //取某个控件中 控件 $("#ID #ID") // 通过控件ID取其中的控件 $("标签.class样式名") //通过class来取控件 $(&

  • jQuery常见开发技巧详细整理

    1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法. 2.jQuery对象与dom对象的转换 只有jquery对象才能使用jquery定义的方法.注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象. 普通的dom对象一般可以通过$()转换成jquery对象. 如:$(document.ge

  • 关于jQuery UI 使用心得及技巧

    1 jQuery UI 2 为我所用 2.1 Tabs 2.2 Accordion 2.2.1 使用基本的Accordion 2.2.2 实现打开多个标签 2.2.3 Accordion的嵌套 3 给插件应用主题--Theme Roller 3.1 更改配色 3.2 更改图标 4 相关连接 jQuery UI 有时你仅仅是为了实现一个渐变的动画效果而不得不把javascrip 重新学习一遍然后书写大量代码.直到jQuery的出现,让开发人员从一大堆繁琐的js代码中解脱,取而代之几行jQuery代

  • jquery easyui使用心得

    第一步下载jquery easyui 下载地址:http://www.jb51.net/codes/70218.html 第二步创建Java web项目 第三步导入相关的文件..目录结构如下 <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css" rel="external nofollow" rel="ext

  • 全面详细的jQuery常见开发技巧手册

    本文为大家整理一篇很详尽的jQuery常见开发技巧文章,供大家参考,具体内容如下 1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法. 2.jQuery对象与dom对象的转换 只有jquery对象才能使用jquery定义的方法.注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象. 普通的d

  • Jquery ThickBox插件使用心得(不建议使用)

    大家可以使用官方推荐的一下几个插件 复制代码 代码如下: While Thickbox had its day, it is not maintained any longer, so we recommend you use some alternatives. * colorbox * jQueryUI Dialog * fancybox * DOM window * shadowbox.js 做项目中发现facebox如果快速单击两下,容易出现黑屏.而且facebox的框架是用table写

  • 15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】

    本文总结述了15个值得开发人员关注的jQuery开发技巧和心得.非常精辟实用!分享给大家供大家参考,具体如下: 在这篇文章中,我们将介绍15个让你的jQuery更加有效的技巧,大部分关于性能提升的,希望大家能够喜欢! 1. 尽量使用最新版本的jQuery类库 jQuery项目中使用了大量的创新.最好的方法来提高性能就是使用最新版本的jQuery.每一个新的版本都包含了优化的bug修复.对我们来说唯一要干的就是修改tag,何乐而不为呢? 我们也可以使用免费的CDN服务,例如, Google来存放j

  • jQuery Ajax使用心得详细整理及注意事项

    IE7及以下请求方式用GET的话,URL的限制是个很容易忽视的问题(最大2083个字符).所以如果URL有可能过长的话,一定要用POST. -------------------------------------------------------------------------------- 终止Ajax请求 终止请求需要调用XMLHttpRequest对象的abort()方法 而在jQuery中的$.get,$.post.$.ajax.$.getJSON.$.getScript...的

随机推荐