经验积累之 jQuery
- JQ选择器详解
-
一、基本选择器
选择器 描 述 返回 示例 #id 根据给定id匹配一个元素 单个元素 $("#test") 选取id为test的元素 .class 根据给定类名匹配一个元素 集合元素 $(".test") 选取class为test的元素 element 根据给定元素名匹配一个元素 集合元素 $("p") 选取p元素 selector1,selector2... 将每一个选择器匹配到元素合成后一起返回 集合元素 $("div , span ,p , myClass")选取所在div span 和拥有class为myClass的标签的一组元素 * 匹配所有元素 集合元素 $("*") 选取所在的元素 二、层次选择器
选择器 描 述 返回 示例 $("ancestor descendant") 选取ancestor元素里的所有descendant(后代)元素 集合元素 $("div span")选取div里面的所有span元素 $("parent > child") 选取parent元素下的child(子)元素。 集合元素 $("div > span")选取div元素下的元素名是span的子元素 $("prev + next") 选取紧接在prev元素后的next元素 集合元素 $(.one + div)选取class为one的下一个div元素 $("prev~siblings") 选取 prev 元素之后的所有siblings元素 集合元素 $("#one~div")选取id为two的元素后面的所有div兄弟元素 可以用next()方法来代替$("prev + next")
$(".one+div") <==> $(".one").next("div");
可用nextAll()代替$("prev~siblings")
$("#prev~div") <==> $("#prev").nextAll("div");
siblings()方法与前后位置无关,只要是同辈节点就能匹配。
三、过滤选择器
1、基本过滤选择器
选择器 描 述 返回 示例 :first 选取第1个元素 单个元素 $("div:first") :last 选取最后一个元素 单个元素 $("div:last") :not(selector) 去除所有与给定选择器匹配的元素 集合元素 $("input:not(.myClass)") :even 选取索引是偶数的所有元素,索引从0开始 集合元素 $("ul li:even") :odd 选取索引是奇数的所有元素,索引从1开始 集合元素 $("ul li:odd") :eq(index) 选取索引等于index的元素,index从0开始 单个元素 $("ul:eq(3)") :gt(index) 选取索引大于index的元素,index从0开始,不包括index 集合元素 $("ul li:gt(3)") :lt(index) 选取索引小于index的元素,index从0开始,不包括index 集合元素 $("ul li:lt(3)") :header 选取所有标题元素,如:h1 h2 h3... 集合元素 $(":header") :animated 选取当前正在执行动画的所有元素 集合元素 $("div:animated") 2、内容过滤选择器
选择器 描述 返回 示例 :contains(text) 选取含有文本内容text的元素 集合元素 $("div:contains('我')") :empty 选取不包含子元素或文本的空元素 集合元素 $("div:empty") :has(selector) 选取含有选择器所匹配元素的元素 集合元素 $("div:has(p)") :parent 选取含有子元素或文本的元素 集合元素 $("div:parent") 3、可见性过滤选择器
选择器 描述 返回 示例 :hidden 选取所有不可见元素 集合元素 $(":hidden") :visible 选取所有可见元素 集合元素 $("div:visible") $(":hidden")==》选取所有不可见元素。包括:<input type="hidden"/> 、 <div style="display:none;"> 、<div style="visibility=hidden">等元素。
4、属性过滤选择器
选择器 描述 返回 示例 [attribute] 选取拥有此属性的元素 集合元素 $("div[id]") [attribute = value] 选取属性值为value的元素 集合元素 $("div[title=test]") [attribute != value] 选取属性值不等于value的元素 集合元素 $("div[titil!=test]") [attribute ^= value] 选取属性值以value开始的元素 集合元素 $("div[titil^=test]") [attribute $= value] 选取属性值以value结束的元素 集合元素 $("div[titil$=test]") [attribute *= value] 选取属性值含有value值的元素 集合元素 $("div[titil*=test]") [selector][selector2][selectorN] 用属性选择器合并成一个复合属性选择器,满足多个条件。
集合元素 $("div[id][title=test]")
选取拥有属性id , 并且属性title 等于test的div元素
5、子元素过滤选择器
选择器 描述 返回 示例 :nth-child(index/even/odd) 选取每个父元素下的第index个子元素或奇偶元素
index从1开始
集合元素 $("ul li:nth-child(3)") :first-child 选取每个父元素的第1个子元素 集合元素 $("ul li:first-child") :last-child 选取第个父元素下的最后一个子元素 集合元素 $("ul li:last-child") :only-child 如果某个元素是它父元素中惟一的子元素,那么将会
被匹配。如果父元素中含有其它元素,刚不会匹配
集合元素 $("div:only-child") :nth-child(even) =>选取每个父元素下的偶子元素
:nth-child(odd) =>选取每个父元素下的奇子元素
:nth-child(3n) =>选取每个父元素下的索引值是3倍数的元素(n从0开始)
6、表单对象属性过滤选择器
选择器 描述 返回值 示例 :enabled 选取所有可用元素 集合元素 $("#form1:enabled") :disabled 选取所有不可用元素 集合元素 $("#form1:disabled") :checked 选取所有被选中的元素
(单选框、复选框)
集合元素 $("input:checked") :selected 选取所有被选中的选项元素
(下拉列表)
集合元素 $("select:selected") 四、表单选择器
选择器 描述 返回 示例 :input 选取所有input 、textarea 、select 、button元素 集合元素 $(":input") :text 选取所有的单行文本框 集合元素 $(":text") :password 选取所有的密码框 集合元素 $(":password") :radio 选取所有的单选框 集合元素 $(":radio") :checkbox 选取所有的多选框 集合元素 $(":checkbox") :submit 选取所有的提交按钮 集合元素 $(":submit") :image 选取所有的图像按钮 集合元素 $(":image") :reset 选取所有的重置按钮 集合元素 $(":reset") :button 选取所有的按钮 集合元素 $(":button") :file 选取所有的上传域 集合元素 $(":file") :hidden 选取所有的不可见元素 集合元素 $(":hidden")
- 50个必备的实用jQuery代码段
-
0. 如何创建嵌套的过滤器:
//允许你减少集合中的匹配元素的过滤器,//只剩下那些与给定的选择器匹配的部分。在这种情况下,//查询删除了任何没(:not)有(:has)//包含class为“selected”(.selected)的子节点。.filter(":not(:has(.selected))")1. 如何重用元素搜索
var allItems = $("div.item");var keepList = $("div#container1 div.item");//现在你可以继续使用这些jQuery对象来工作了。例如,//基于复选框裁剪“keep list”,复选框的名称//符合< div >class names:$(formToLookAt + " input:checked").each(function() {keepList = keepList.filter("." + $(this).attr("name"));});< /div>2. 任何使用has()来检查某个元素是否包含某个类或是元素:
//jQuery 1.4.*包含了对这一has方法的支持。该方法找出//某个元素是否包含了其他另一个元素类或是其他任何的//你正在查找并要在其之上进行操作的东东。$("input").has(".email").addClass("email_icon");3. 如何使用jQuery来切换样式表
//找出你希望切换的媒体类型(media-type),然后把href设置成新的样式表。$('link[media='screen']').attr('href', 'Alternative.css');4. 如何限制选择范围(基于优化目的):
//尽可能使用标签名来作为类名的前缀,//这样jQuery就不需要花费更多的时间来搜索//你想要的元素。还要记住的一点是,//针对于你的页面上的元素的操作越具体化,//就越能降低执行和搜索的时间。var in_stock = $('#shopping_cart_items input.is_in_stock');<ul id="shopping_cart_items"><li><input type="radio" value="Item-X" name="item" class="is_in_stock" /> Item X</li><li><input type="radio" value="Item-Y" name="item" class="3-5_days" /> Item Y</li><li><input type="radio" value="Item-Z" name="item" class="unknown" /> Item Z</li></ul>5. 如何正确地使用ToggleClass:
//切换(toggle)类允许你根据某个类的//是否存在来添加或是删除该类。//这种情况下有些开发者使用:a.hasClass('blueButton') ? a.removeClass('blueButton') : a.addClass('blueButton');//toggleClass允许你使用下面的语句来很容易地做到这一点a.toggleClass('blueButton');6. 如何设置IE特有的功能:
if ($.browser.msie) {// Internet Explorer就是个虐待狂}7. 如何使用jQuery来代替一个元素:
$('#thatdiv').replaceWith('fnuh');8. 如何验证某个元素是否为空:
if ($('#keks').html()) {//什么都没有找到;}9. 如何从一个未排序的集合中找出某个元素的索引号
$("ul > li").click(function () {var index = $(this).prevAll().length;});10. 如何把函数绑定到事件上:
$('#foo').bind('click', function() {alert('User clicked on "foo."');});11. 如何追加或是添加html到元素中:
$('#lal').append('sometext');12. 在创建元素时,如何使用对象字面量(literal)来定义属性
var e = $("", { href: "#", class: "a-class another-class", title: "..." });13. 如何使用多个属性来进行过滤
//在使用许多相类似的有着不同类型的input元素时,//这种基于精确度的方法很有用var elements = $('#someid input[type=sometype][value=somevalue]').get();14. 如何使用jQuery来预加载图像:
jQuery.preloadImages = function() {for(var i = 0; i < arguments.length; i++) {$("<img />").attr('src', arguments[i]);}};//用法$.preloadImages('image1.gif', '/path/to/image2.png', 'some/image3.jpg');15. 如何为任何与选择器相匹配的元素设置事件处理程序:
$('button.someClass').live('click', someFunction);//注意,在jQuery 1.4.2中,delegate和undelegate选项//被引入代替live,因为它们提供了更好的上下文支持//例如,就table来说,以前你会用//.live()$("table").each(function(){$("td", this).live("hover", function(){$(this).toggleClass("hover");});});//现在用$("table").delegate("td", "hover", function(){$(this).toggleClass("hover");});16. 如何找到一个已经被选中的option元素:
$('#someElement').find('option:selected');17. 如何隐藏一个包含了某个值文本的元素:
$("p.value:contains('thetextvalue')").hide();18. 如何自动滚动到页面中的某区域
jQuery.fn.autoscroll = function(selector) {$('html,body').animate({scrollTop: $(selector).offset().top},500};}//然后像这样来滚动到你希望去到的class/area上。$('.area_name').autoscroll();19. 如何检测各种浏览器:
检测Safari (if( $.browser.safari)),检测IE6及之后版本 (if ($.browser.msie && $.browser.version > 6 )),检测IE6及之前版本 (if ($.browser.msie && $.browser.version <= 6 )),检测FireFox 2及之后版本 (if ($.browser.mozilla && $.browser.version >= '1.8' ))20. 如何替换串中的词
var el = $('#id');el.html(el.html().replace(/word/ig, ''));21. 如何禁用右键单击上下文菜单:
$(document).bind('contextmenu',function(e){return false;});22. 如何定义一个定制的选择器
$.expr[':'].mycustomselector = function(element, index, meta, stack){// element- 一个DOM元素// index – 栈中的当前循环索引// meta – 有关选择器的元数据// stack – 要循环的所有元素的栈// 如果包含了当前元素就返回true// 如果不包含当前元素就返回false };// 定制选择器的用法:$('.someClasses:test').doSomething();23. 如何检查某个元素是否存在
if ($('#someDiv').length) {//万岁!!!它存在……}24. 如何使用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");}});25. 如何显示或是删除input域中的默认值
//这段代码展示了在用户未输入值时,//如何在文本类型的input域中保留//一个默认值wap_val = [];$(".swap").each(function(i){wap_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 type="text" value="Enter Username here.." class="swap" />26. 如何在一段时间之后自动隐藏或关闭元素(支持1.4版本):
//这是1.3.2中我们使用setTimeout来实现的方式setTimeout(function() {$('.mydiv').hide('blind', {}, 500)}, 5000);//而这是在1.4中可以使用delay()这一功能来实现的方式(这很像是休眠)$(".mydiv").delay(5000).hide('blind', {}, 500);27. 如何把已创建的元素动态地添加到DOM中:
var newDiv = $('');newDiv.attr('id','myNewDiv').appendTo('body');28. 如何限制“Text-Area”域中的字符的个数:
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 maxLengththis.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);}};}});};//用法$('#mytextarea').maxLength(500);29. 如何为函数创建一个基本的测试
//把测试单独放在模块中module("Module B");test("some other test", function() {//指明测试内部预期有多少要运行的断言expect(2);//一个比较断言,相当于JUnit的assertEqualsequals( true, false, "failing test" );equals( true, true, "passing test" );});30. 如何在jQuery中克隆一个元素:
var cloned = $('#somediv').clone();31. 在jQuery中如何测试某个元素是否可见
if($(element).is(':visible') == 'true') {//该元素是可见的}32. 如何把一个元素放在屏幕的中心位置:
jQuery.fn.center = function () {this.css('position','absolute');this.css('top', ( $(window).height() - this.height() ) / +$(window).scrollTop() + 'px');this.css('left', ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + 'px');return this;}//这样来使用上面的函数:$(element).center();33. 如何把有着某个特定名称的所有元素的值都放到一个数组中:
var arrInputValues = new Array();$("input[name='table[]']").each(function(){arrInputValues.push($(this).val());});34. 如何从元素中除去html
(function($) {$.fn.stripHtml = function() {var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi;this.each(function() {$(this).html( $(this).html().replace(regexp,”") );});return $(this);}})(jQuery);//用法:$('p').stripHtml();35. 如何使用closest来取得父元素:
$('#searchBox').closest('div');36. 如何使用Firebug和Firefox来记录jQuery事件日志:
// 允许链式日志记录// 用法:$('#someDiv').hide().log('div hidden').addClass('someClass');jQuery.log = jQuery.fn.log = function (msg) {if (console){console.log("%s: %o", msg, this);}return this;};37. 如何强制在弹出窗口中打开链接:
jQuery('a.popup').live('click', function(){newwindow=window.open($(this).attr('href'),'','height=200,width=150');if (window.focus) {newwindow.focus();}return false;});38. 如何强制在新的选项卡中打开链接:
jQuery('a.newTab').live('click', function(){newwindow=window.open($(this).href);jQuery(this).target = "_blank";return false;});39. 在jQuery中如何使用.siblings()来选择同辈元素
// 不这样做$('#nav li').click(function(){$('#nav li').removeClass('active');$(this).addClass('active');});//替代做法是$('#nav li').click(function(){$(this).addClass('active').siblings().removeClass('active');});40. 如何切换页面上的所有复选框:
var tog = false;// 或者为true,如果它们在加载时为被选中状态的话$('a').click(function() {$("input[type=checkbox]").attr("checked",!tog);tog = !tog;});41. 如何基于一些输入文本来过滤一个元素列表:
//如果元素的值和输入的文本相匹配的话//该元素将被返回$('.someClass').filter(function() {return $(this).attr('value') == $('input#someId').val();})42. 如何获得鼠标垫光标位置x和y
$(document).ready(function() {$(document).mousemove(function(e){$(’#XY’).html(”X Axis : ” + e.pageX + ” | Y Axis ” + e.pageY);});});43. 如何把整个的列表元素(List Element,LI)变成可点击的
$("ul li").click(function(){window.location=$(this).find("a").attr("href");return false;});<ul><li><a href="#">Link 1</a></li><li><a href="#">Link 2</a></li><li><a href="#">Link 3</a></li><li><a href="#">Link 4</a></li></ul>44. 如何使用jQuery来解析XML(基本的例子):
function parseXml(xml) {//找到每个Tutorial并打印出author$(xml).find("Tutorial").each(function() {$("#output").append($(this).attr("author") + "");});}45. 如何检查图像是否已经被完全加载进来
$('#theImage').attr('src', 'image.jpg').load(function() {alert('This Image Has Been Loaded');});46. 如何使用jQuery来为事件指定命名空间:
//事件可以这样绑定命名空间$('input').bind('blur.validation', function(e){// ...});//data方法也接受命名空间$('input').data('validation.isValid', true);47. 如何检查cookie是否启用
var dt = new Date();dt.setSeconds(dt.getSeconds() + 60);document.cookie = "cookietest=1; expires=" + dt.toGMTString();var cookiesEnabled = document.cookie.indexOf("cookietest=") != -1;if(!cookiesEnabled) {//没有启用cookie}48. 如何让cookie过期:
var date = new Date();date.setTime(date.getTime() + (x * 60 * 1000));$.cookie('example', 'foo', { expires: date });49. 如何使用一个可点击的链接来替换页面中任何的URL
$.fn.replaceUrl = function() {var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;this.each(function() {$(this).html($(this).html().replace(regexp,'<a href="$1">$1</a>‘));});return $(this);}//用法$('p').replaceUrl();英文原文: 50 jQuery Snippets That Will Help You Become A Better JavaScript Developer
- getXMl
- $.get("people.xml",function(data){
var content ="";
content += $(data).find("name").text() + "<br />";
content += $(data).find("age").text() + "<br />" ;
alert(content)
},"xml");
- get与getJSON
- $.get("people.json",function(data){
var content ="";
content += data.name + "<br />";
content += data.age + "<br />" ;
alert(content)
},"json");
-------------------------------------
$.getJSON("people.json",function(data){
var content ="";
content += data.name + "<br />";
content += data.age + "<br />" ;
alert(content)
});
- getJSON方法
-
$.getJSON("people.json", function(JSONObject){
$("#jname").html(JSONObject.name)
$("#jage").html(JSONObject.age)
$("#jstreet").html(JSONObject.street)
$("#jphone").html(JSONObject.phone)
});
people.json
{
"name":"lancer",
"street":"Fifth Avenue New York 666",
"age":56,
"phone":"555 1234567"
}
-------------------------------------------------
$.getJSON("people.json",function(data){
var content ="";
$.each(data,function(index,info){
content += info["name"] + "<br />";
content += info["age"] + "<br />"
});
});
$(".show").html(content)
[
{
"name":"lancer",
"age":24
},
{
"name":"lara",
"age":21
}
] });
- cookie操作
- jQuery操作cookie的插件,大概的使用方法如下
example $.cookie(’the_cookie’, ‘the_value’);
设置cookie的值
example $.cookie(’the_cookie’, ‘the_value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});
新建一个cookie 包括有效期 路径 域名等
example $.cookie(’the_cookie’, ‘the_value’);
新建cookie
example $.cookie(’the_cookie’, null);
删除一个cookie
- target的用法
-
$(function(){
$("#num").click(function(e){
var cur;
if(e==null)
{
CUR = window.e.srcElement;
}
else
{
cur = e.target
}
$(cur).css("color","red")
});
});<div id="num">
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
</div>
- 5屏焦点图
- $(".focus ul li:first").show();
$(".focus ol li:first").addClass("cur");
var Cur = 0;
var int;
$(".focus ol li").mouseover(function(){
Cur = $(this).index();
$(this).addClass("cur").siblings().removeClass("cur");
$(".focus ul li").eq(Cur).fadeIn().addClass("cur").siblings().fadeOut().removeClass("cur");
clearInterval(int)
});
$(".focus ol li").mouseout(function(){
int = setInterval(focusPic,4000)
});
function focusPic(){
if(Cur <=4)
{
Cur ++;
}
else
{
Cur = 0;
}
$(".focus ol li").eq(Cur).addClass("cur").siblings().removeClass("cur");
$(".focus ul li").eq(Cur).fadeIn(1000).addClass("cur").siblings().fadeOut(1500).removeClass("cur");
}
int = setInterval(focusPic,4000)
- 方法大全
-
Attribute:
$("p").addClass(css中定义的样式类型); 给某个元素添加样式
$("img").attr({src:"test.jpg",alt:"test Image"}); 给某个元素添加属性/值,参数是map
$("img").attr("src","test.jpg"); 给某个元素添加属性/值
$("img").attr("title", function() { return this.src }); 给某个元素添加属性/值
$("元素名称").html(); 获得该元素内的内容(元素,文本等)
$("元素名称").html("<b>new stuff</b>"); 给某元素设置内容
$("元素名称").removeAttr("属性名称") 给某元素删除指定的属性以及该属性的值
$("元素名称").removeClass("class") 给某元素删除指定的样式
$("元素名称").text(); 获得该元素的文本
$("元素名称").text(value); 设置该元素的文本值为value
$("元素名称").toggleClass(class) 当元素存在参数中的样式的时候取消,如果不存在就设置此样式
$("input元素名称").val(); 获取input元素的值
$("input元素名称").val(value); 设置input元素的值为value
Manipulation:
$("元素名称").after(content); 在匹配元素后面添加内容
$("元素名称").append(content); 将content作为元素的内容插入到该元素的后面
$("元素名称").appendTo(content); 在content后接元素
$("元素名称").before(content); 与after方法相反
$("元素名称").clone(布尔表达式) 当布尔表达式为真时,克隆元素(无参时,当作true处理)
$("元素名称").empty() 将该元素的内容设置为空
$("元素名称").insertAfter(content); 将该元素插入到content之后
$("元素名称").insertBefore(content); 将该元素插入到content之前
$("元素").prepend(content); 将content作为该元素的一部分,放到该元素的最前面
$("元素").prependTo(content); 将该元素作为content的一部分,放content的最前面
$("元素").remove(); 删除所有的指定元素
$("元素").remove("exp"); 删除所有含有exp的元素
$("元素").wrap("html"); 用html来包围该元素
$("元素").wrap(element); 用element来包围该元素
Traversing:
add(expr)
add(html)
add(elements)
children(expr)
contains(str)
end()
filter(expression)
filter(filter)
find(expr)
is(expr)
next(expr)
not(el)
not(expr)
not(elems)
parent(expr)
parents(expr)
prev(expr)
siblings(expr)Core:
$(html).appendTo("body") 相当于在body中写了一段html代码
$(elems) 获得DOM上的某个元素
$(function(){……..}); 执行一个函数
$("div > p").css("border", "1px solid gray"); 查找所有div的子节点p,添加样式
$("input:radio", document.forms[0]) 在当前页面的第一个表单中查找所有的单选按钮
$.extend(prop) prop是一个jQuery对象,
举例:
jQuery.extend({
min: function(a, b) { return a < b ? a : b; },
max: function(a, b) { return a > b ? a : b; }
});
jQuery( expression, [context] ) —$( expression, [context]); 在默认情况下,$()查询的是当前HTML文档中的DOM元素。each( callback ) 以每一个匹配的元素作为上下文来执行一个函数
举例:1
$("span").click(function){
$("li").each(function(){
$(this).toggleClass("example");
});
});
举例:2
$("button").click(function () {
$("div").each(function (index, domEle) {
// domEle == this
$(domEle).css("backgroundColor", "yellow");
if ($(this).is("#stop")) {
$("span").text("Stopped at div index #" + index);
return false;
}
});
});jQuery Event:
ready(fn); $(document).ready()注意在body中没有onload事件,否则该函数不能执行。在每个页面中可以
有很多个函数被加载执行,按照fn的顺序来执行。
bind( type, [data], fn ) 为每一个匹配元素的特定事件(像click)绑定一个或多个事件处理器函数。可能的事件属性有:blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove,
mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress,
keyup, error
one( type, [data], fn ) 为每一个匹配元素的特定事件(像click)绑定一个或多个事件处理器函数。在每个对
象上,这个事件处理函数只会被执行一次。其他规则与bind()函数相同。trigger( type, [data] ) 在每一个匹配的元素上触发某类事件。
triggerHandler( type, [data] ) 这一特定方法会触发一个元素上特定的事件(指定一个事件类型),同时取消浏览器对此事件的默认行动
unbind( [type], [data] ) 反绑定,从每一个匹配的元素中删除绑定的事件。
$("p").unbind() 移除所有段落上的所有绑定的事件
$("p").unbind( "click" ) 移除所有段落上的click事件
hover( over, out ) over,out都是方法, 当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。
$("p").hover(function(){
$(this).addClass("over");
},
function(){
$(this).addClass("out");
}
);toggle( fn, fn ) 如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。
$("p").toggle(function(){
$(this).addClass("selected");
},
function(){
$(this).removeClass("selected");
}
);元素事件列表说明
注:不带参数的函数,其参数为可选的 fn。jQuery不支持form元素的reset事件。
事件 描述 支持元素或对象
blur( ) 元素失去焦点 a, input, textarea, button, select, label, map, area
change( ) 用户改变域的内容 input, textarea, select
click( ) 鼠标点击某个对象 几乎所有元素
dblclick( ) 鼠标双击某个对象 几乎所有元素
error( ) 当加载文档或图像时发生某个错误 window, img
focus( ) 元素获得焦点 a, input, textarea, button, select, label, map, area
keydown( ) 某个键盘的键被按下 几乎所有元素
keypress( ) 某个键盘的键被按下或按住 几乎所有元素
keyup( ) 某个键盘的键被松开 几乎所有元素
load( fn ) 某个页面或图像被完成加载 window, img
mousedown( fn ) 某个鼠标按键被按下 几乎所有元素
mousemove( fn ) 鼠标被移动 几乎所有元素
mouseout( fn ) 鼠标从某元素移开 几乎所有元素
mouseover( fn ) 鼠标被移到某元素之上 几乎所有元素
mouseup( fn ) 某个鼠标按键被松开 几乎所有元素
resize( fn ) 窗口或框架被调整尺寸 window, iframe, frame
scroll( fn ) 滚动文档的可视部分时 window
select( ) 文本被选定 document, input, textarea
submit( ) 提交按钮被点击 form
unload( fn ) 用户退出页面 windowJQuery Ajax 方法说明:
load( url, [data], [callback] ) 装入一个远程HTML内容到一个DOM结点。
$("#feeds").load("feeds.html"); 将feeds.html文件载入到id为feeds的div中
$("#feeds").load("feeds.php", {limit: 25}, function(){
alert("The last 25 entries in the feed have been loaded");
});jQuery.get( url, [data], [callback] ) 使用GET请求一个页面。
$.get("test.cgi", { name: "John", time: "2pm" }, function(data){
alert("Data Loaded: " + data);
});jQuery.getJSON( url, [data], [callback] ) 使用GET请求JSON数据。
$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){
alert("JSON Data: " + json.users[3].name);
});jQuery.getScript( url, [callback] ) 使用GET请求JavaScript文件并执行。
$.getScript("test.js", function(){
alert("Script loaded and executed.");
});
jQuery.post( url, [data], [callback], [type] ) 使用POST请求一个页面。ajaxComplete( callback ) 当一个AJAX请求结束后,执行一个函数。这是一个Ajax事件
$("#msg").ajaxComplete(function(request, settings){
$(this).append("<li>Request Complete.</li>");
});
ajaxError( callback ) 当一个AJAX请求失败后,执行一个函数。这是一个Ajax事件
$("#msg").ajaxError(function(request, settings){
$(this).append("<li>Error requesting page " + settings.url + "</li>");
});ajaxSend( callback ) 在一个AJAX请求发送时,执行一个函数。这是一个Ajax事件
$("#msg").ajaxSend(function(evt, request, settings){
$(this).append("<li<Starting request at " + settings.url
+ "</li<");
});ajaxStart( callback ) 在一个AJAX请求开始但还没有激活时,执行一个函数。这是一个Ajax事件
当AJAX请求开始(并还没有激活时)显示loading信息
$("#loading").ajaxStart(function(){
$(this).show();
});ajaxStop( callback ) 当所有的AJAX都停止时,执行一个函数。这是一个Ajax事件
当所有AJAX请求都停止时,隐藏loading信息。
$("#loading").ajaxStop(function(){
$(this).hide();
});ajaxSuccess( callback ) 当一个AJAX请求成功完成后,执行一个函数。这是一个Ajax事件
当AJAX请求成功完成时,显示信息。
$("#msg").ajaxSuccess(function(evt, request, settings){
$(this).append("<li>Successful Request!</li>");
});jQuery.ajaxSetup( options ) 为所有的AJAX请求进行全局设置。查看$.ajax函数取得所有选项信息。
设置默认的全局AJAX请求选项。
$.ajaxSetup({
url: "/xmlhttp/",
global: false,
type: "POST"
});
$.ajax({ data: myData });serialize( ) 以名称和值的方式连接一组input元素。实现了正确表单元素序列
function showValues() {
var str = $("form").serialize();
$("#results").text(str);
}
$(":checkbox, :radio").click(showValues);
$("select").change(showValues);
showValues();serializeArray( ) 连接所有的表单和表单元素(类似于.serialize()方法),但是返回一个JSON数据格式。
从form中取得一组值,显示出来
function showValues() {
var fields = $(":input").serializeArray();
alert(fields);
$("#results").empty();
jQuery.each(fields, function(i, field){
$("#results").append(field.value + " ");
});
}
$(":checkbox, :radio").click(showValues);
$("select").change(showValues);
showValues();JQuery Effects 方法说明
show( ) 显示隐藏的匹配元素。
show( speed, [callback] ) 以优雅的动画显示所有匹配的元素,并在显示完成后可选地触发一个回调函数。
hide( ) 隐藏所有的匹配元素。
hide( speed, [callback] ) 以优雅的动画隐藏所有匹配的元素,并在显示完成后可选地触发一个回调函数
toggle( ) 切换元素的可见状态。如果元素是可见的,切换为隐藏的;如果元素是隐藏的,
切换为可见的。
slideDown( speed, [callback] ) 通过高度变化(向下增大)来动态地显示所有匹配的元素,在显示完成后可选
地触发一个回调函数。这个动画效果只调整元素的高度,可以使匹配的元素以
"滑动"的方式显示出来。
slideUp( speed, [callback] ) 通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地
触发一个回调函数。这个动画效果只调整元素的高度,可以使匹配的元素以"滑动"
的方式隐藏起来。
slideToggle( speed, [callback] ) 通过高度变化来切换所有匹配元素的可见性,并在切换完成后可选地触发一个回
调函数。 这个动画效果只调整元素的高度,可以使匹配的元素以"滑动"的方式隐
藏或显示。
fadeIn( speed, [callback] ) 通过不透明度的变化来实现所有匹配元素的淡入效果,并在动画完成后可选地触
发一个回调函数。 这个动画只调整元素的不透明度,也就是说所有匹配的元素的
高度和宽度不会发生变化。
fadeOut( speed, [callback] ) 通过不透明度的变化来实现所有匹配元素的淡出效果,并在动画完成后可选地触
发一个回调函数。 这个动画只调整元素的不透明度,也就是说所有匹配的元素的
高度和宽度不会发生变化。
fadeTo( speed, opacity, [callback] ) 把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成
后可选地触发一个回调函数。 这个动画只调整元素的不透明度,也就是说所
有匹配的元素的高度和宽度不会发生变化。
stop( ) 停止所有匹配元素当前正在运行的动画。如果有动画处于队列当中,他们就会立即开始。
queue( ) 取得第一个匹配元素的动画序列的引用(返回一个内容为函数的数组)
queue( callback ) 在每一个匹配元素的事件序列的末尾添加一个可执行函数,作为此元素的事件函数
queue( queue ) 以一个新的动画序列代替所有匹配元素的原动画序列
dequeue( ) 执行并移除动画序列前端的动画
animate( params, [duration], [easing], [callback] ) 用于创建自定义动画的函数。
animate( params, options ) 创建自定义动画的另一个方法。作用同上。JQuery Traversing 方法说明
eq( index ) 从匹配的元素集合中取得一个指定位置的元素,index从0开始
filter( expr ) 返回与指定表达式匹配的元素集合,可以使用","号分割多个expr,用于实现多个条件筛选
filter( fn ) 利用一个特殊的函数来作为筛选条件移除集合中不匹配的元素。
is( expr ) 用一个表达式来检查当前选择的元素集合,如果其中至少有一个元素符合这个给定的
表达式就返回true。
map( callback ) 将jQuery对象中的一组元素利用callback方法转换其值,然后添加到一个jQuery数组中。
not( expr ) 从匹配的元素集合中删除与指定的表达式匹配的元素。
slice( start, [end] ) 从匹配元素集合中取得一个子集,和内建的数组的slice方法相同。
add( expr ) 把与表达式匹配的元素添加到jQuery对象中。
children( [expr] ) 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。可选的过滤器
将使这个方法只匹配符合的元素(只包括元素节点,不包括文本节点)。
contents( ) 取得一个包含匹配的元素集合中每一个元素的所有子孙节点的集合(只包括元素节点,不
包括文本节点),如果元素为iframe,则取得其中的文档元素
find( expr ) 搜索所有与指定表达式匹配的元素。
next( [expr] ) 取得一个包含匹配的元素集合中每一个元素紧邻的后面同辈元素的元素集合。
nextAll( [expr] ) 取得一个包含匹配的元素集合中每一个元素所有的后面同辈元素的元素集合
parent( [expr] ) 取得一个包含着所有匹配元素的唯一父元素的元素集合。
parents( [expr] ) 取得一个包含着所有匹配元素的唯一祖先元素的元素集合(不包含根元素)。
prev( [expr] ) 取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合。
prevAll( [expr] ) 取得一个包含匹配的元素集合中每一个元素的之前所有同辈元素的元素集合。
siblings( [expr] ) 取得一个包含匹配的元素集合中每一个元素的所有同辈元素的元素集合。
andSelf( ) 将前一个匹配的元素集合添加到当前的集合中
取得所有div元素和其中的p元素,添加border类属性。取得所有div元素中的p元素,
添加background类属性
$("div").find("p").andSelf().addClass("border");
$("div").find("p").addClass("background");
end( ) 结束当前的操作,回到当前操作的前一个操作
找到所有p元素其中的span元素集合,然后返回p元素集合,添加css属性
$("p").find("span").end().css("border", "2px red solid");JQuery Selectors 方法说明
基本选择器
$("#myDiv") 匹配唯一的具有此id值的元素
$("div") 匹配指定名称的所有元素
$(".myClass") 匹配具有此class样式值的所有元素
$("*") 匹配所有元素
$("div,span,p.myClass") 联合所有匹配的选择器
层叠选择器
$("form input") 后代选择器,选择ancestor的所有子孙节点
$("#main > *") 子选择器,选择parent的所有子节点
$("label + input") 临选择器,选择prev的下一个临节点
$("#prev ~ div") 同胞选择器,选择prev的所有同胞节点
基本过滤选择器
$("tr:first") 匹配第一个选择的元素
$("tr:last") 匹配最后一个选择的元素
$("input:not(:checked) + span")从原元素集合中过滤掉匹配selector的所有元素(这里有是一个临选择器)
$("tr:even") 匹配集合中偶数位置的所有元素(从0开始)
$("tr:odd") 匹配集合中奇数位置的所有元素(从0开始)
$("td:eq(2)") 匹配集合中指定位置的元素(从0开始)
$("td:gt(4)") 匹配集合中指定位置之后的所有元素(从0开始)
$("td:gl(4)") 匹配集合中指定位置之前的所有元素(从0开始)
$(":header") 匹配所有标题
$("div:animated") 匹配所有正在运行动画的所有元素
内容过滤选择器
$("div:contains('John')") 匹配含有指定文本的所有元素
$("td:empty") 匹配所有空元素(只含有文本的元素不算空元素)
$("div:has(p)") 从原元素集合中再次匹配所有至少含有一个selector的所有元素
$("td:parent") 匹配所有不为空的元素(含有文本的元素也算)
$("div:hidden") 匹配所有隐藏的元素,也包括表单的隐藏域
$("div:visible") 匹配所有可见的元素
属性过滤选择器
$("div[id]") 匹配所有具有指定属性的元素
$("input[name='newsletter']") 匹配所有具有指定属性值的元素
$("input[name!='newsletter']") 匹配所有不具有指定属性值的元素
$("input[name^='news']") 匹配所有指定属性值以value开头的元素
$("input[name$='letter']") 匹配所有指定属性值以value结尾的元素
$("input[name*='man']") 匹配所有指定属性值含有value字符的元素
$("input[id][name$='man']") 匹配同时符合多个选择器的所有元素
子元素过滤选择器
$("ul li:nth-child(2)"),
$("ul li:nth-child(odd)"), 匹配父元素的第n个子元素
$("ul li:nth-child(3n + 1)")$("div span:first-child") 匹配父元素的第1个子元素
$("div span:last-child") 匹配父元素的最后1个子元素
$("div button:only-child") 匹配父元素的唯一1个子元素
表单元素选择器
$(":input") 匹配所有的表单输入元素,包括所有类型的input, textarea, select 和 button
$(":text") 匹配所有类型为text的input元素
$(":password") 匹配所有类型为password的input元素
$(":radio") 匹配所有类型为radio的input元素
$(":checkbox") 匹配所有类型为checkbox的input元素
$(":submit") 匹配所有类型为submit的input元素
$(":image") 匹配所有类型为image的input元素
$(":reset") 匹配所有类型为reset的input元素
$(":button") 匹配所有类型为button的input元素
$(":file") 匹配所有类型为file的input元素
$(":hidden") 匹配所有类型为hidden的input元素或表单的隐藏域
表单元素过滤选择器
$(":enabled") 匹配所有可操作的表单元素
$(":disabled") 匹配所有不可操作的表单元素
$(":checked") 匹配所有已点选的元素
$("select option:selected") 匹配所有已选择的元素JQuery CSS 方法说明
css( name ) 访问第一个匹配元素的样式属性。
css( properties ) 把一个"名/值对"对象设置为所有匹配元素的样式属性。
$("p").hover(function () {
$(this).css({ backgroundColor:"yellow", fontWeight:"bolder" });
}, function () {
var cssObj = {
backgroundColor: "#ddd",
fontWeight: "",
color: "rgb(0,40,244)"
}
$(this).css(cssObj);
});
css( name, value ) 在所有匹配的元素中,设置一个样式属性的值。
offset( ) 取得匹配的第一个元素相对于当前可视窗口的位置。返回的对象有2个属性,
top和left,属性值为整数。这个函数只能用于可见元素。
var p = $("p:last");
var offset = p.offset();
p.html( "left: " + offset.left + ", top: " + offset.top );
width( ) 取得当前第一匹配的元素的宽度值,
width( val ) 为每个匹配的元素设置指定的宽度值。
height( ) 取得当前第一匹配的元素的高度值,
height( val ) 为每个匹配的元素设置指定的高度值。JQuery Utilities 方法说明
jQuery.browser
.msie 表示ie
jQuery.browser.version 读取用户浏览器的版本信息
jQuery.boxModel 检测用户浏览器针对当前页的显示是否基于W3C CSS的盒模型
jQuery.isFunction( obj ) 检测传递的参数是否为function
function stub() { }
var objs = [
function () {},
{ x:15, y:20 },
null,
stub,
"function"
];
jQuery.each(objs, function (i) {
var isFunc = jQuery.isFunction(objs[i]);
$("span:eq( " + i + ")").text(isFunc);
});
jQuery.trim( str ) 清除字符串两端的空格,使用正则表达式来清除给定字符两端的空格
jQuery.each( object, callback ) 一个通用的迭代器,可以用来无缝迭代对象和数组
jQuery.extend( target, object1, [objectN] ) 扩展一个对象,修改原来的对象并返回,这是一个强大的实现继承的
工具,这种继承是采用传值的方法来实现的,而不是JavaScript中的
原型链方式。
合并settings和options对象,返回修改后的settings对象
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options);合并defaults和options对象,defaults对象并没有被修改。options对象中的值
代替了defaults对象的值传递给了empty。var empty = {}
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var settings = $.extend(empty, defaults, options);
jQuery.grep( array, callback, [invert] ) 通过一个筛选函数来去除数组中的项
$.grep( [0,1,2], function(n,i){
return n > 0;
});
jQuery.makeArray( obj ) 将一个类似数组的对象转化为一个真正的数组
将选取的div元素集合转化为一个数组
var arr = jQuery.makeArray(document.getElementsByTagName("div"));
arr.reverse(); // use an Array method on list of dom elements
$(arr).appendTo(document.body);
jQuery.map( array, callback ) 使用某个方法修改一个数组中的项,然后返回一个新的数组
jQuery.inArray( value, array ) 返回value在数组中的位置,如果没有找到,则返回-1
jQuery.unique( array ) 删除数组中的所有重复元素,返回整理后的数组
- 自定义插件
- ; (function($){
$.extend({
"jiafa" : function(num1,num2) {
var jieguo = parseInt(num1)+parseInt(num2)
return jieguo
}
})
})(jQuery);
- 自定义方法
-
/*不带参数*/
$.fn.extend({
toRed: function()
{
$(this).css("background-color","#F00")
},
});
/*带参数*/
$.fn.extend({
changeColor: function(bccolor)
{
$(this).css("background-color",bccolor)
},
});
$("#cm").click(function(){
$(this).toRed();
$(this).changeColor('#F00');});
/*带点击事件*/
$.fn.extend({
alertWhileClick:function(){
$(this).click(function(){
alert($(this).val());
});
}
});
$("#input1″).alertWhileClick(); //页面上为:<input id="input1″ type="text"/>
- 板块样式
- var nowpage = $(".Crumbs b").text();
$(".SubLeftMenu li a:contains('" + nowpage + "')").parent().addClass("Curr");
- 对联
- function nowxy()
{
var st = $(document).scrollTop() + 105
$(".rightNav").animate({top:st},"fast")
}
setInterval (nowxy,500)