收藏在这里方便了
Dom: 转载http://www.youcan.cc/index.php/archives/104
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(“new stuff”); 给某元素设置内容
$(“元素名称”).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; }
});
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 ) 用户退出页面 window
JQuery 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(“Request Complete.”);
});
ajaxError( callback ) 当一个AJAX请求失败后,执行一个函数。这是一个Ajax事件
$(“#msg”).ajaxError(function(request, settings){
$(this).append(“Error requesting page ” + settings.url + “”);
});
ajaxSend( callback ) 在一个AJAX请求发送时,执行一个函数。这是一个Ajax事件
$(“#msg”).ajaxSend(function(evt, request, settings){
$(this).append(“Successful Request!”);
});
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 ) 删除数组中的所有重复元素,返回整理后的数组
50个必备的实用jQuery代码段
1. 如何修改jQuery默认编码(例如默认UTF-8改成改GB2312):
$.ajaxSetup({
ajaxSettings:{ contentType:
"application/x-www-form-urlencoded;chartset=GB2312"
}
});
|
2. 解决jQuery, prototype共存,$全局变量冲突问题:
<script src=
"prototype.js"
></script>
<script type=
"text/javascript"
>
jQuery.noConflict();
</script>
//注意:一定要先引入prototype.js 再引入jquery.js,先后顺序不可错。
|
3. jQuery 判断元素上是否绑定了事件
//jQuery event封装支持判断元素上是否绑定了事件,此方法只适用于jQuery绑定的事件
var $events = $(“#foo”).data(“events”);
if( $events && $events["click"] ){
//your code
}
4. 如何使用jQuery来切换样式表
//找出你希望切换的媒体类型(media-type),然后把href设置成新的样式表。
$(‘link[media='screen']‘).attr(‘href’, ‘alternative.css’);
5. 如何限制选择范围(基于优化目的):
//尽可能使用标签名来作为类名的前缀,
//这样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
>
|
6. 如何正确地使用toggleClass:
//切换(toggle)类允许你根据某个类的
//是否存在来添加或是删除该类。
//这种情况下有些开发者使用:
a.hasClass(‘blueButton’) ? a.removeClass(‘blueButton’) : a.addClass(‘blueButton’);
//toggleClass允许你使用下面的语句来很容易地做到这一点
a.toggleClass(‘blueButton’);
7. 如何设置IE特有的功能:
if ($.browser.msie) {
// Internet Explorer就是个虐待狂
}
8. 如何使用jQuery来代替一个元素:
$(
'#thatdiv'
).replaceWith(
'fnuh'
);
9. 如何验证某个元素是否为空:
// 方法一
if
(! $(
'#keks'
).html()) {
//什么都没有找到;
}
// 方法二
if
($(
'#keks'
).is(
":empty"
)) {
//什么都没有找到;
}
|
10. 如何从一个未排序的集合中找出某个元素的索引号
$(
"ul > li"
).click(
function
() {
var
index = $(
this
).prevAll().length;
//prevAll([expr]): 查找当前元素之前所有的同辈元素
});
11. 如何把函数绑定到事件上:
//方法一
$(
'#foo'
).click(
function
(event) {
alert(
'User clicked on "foo."'
);
});
//方法二, 支持动态传参
$(
'#foo'
).bind(
'click'
, {test1:
"abc"
, test2:
"123"
},
function
(event) {
alert(
'User clicked on "foo."'
+ event.data.test1 + event.data.test2 );
});
|
12. 如何追加或是添加html到元素中:
$(
'#lal'
).append(
'sometext'
);
|
13. 在创建元素时,如何使用对象字面量(literal)来定义属性
var
e = $(
""
, { href:
"#"
, class:
"a-class another-class"
, title:
"..."
});
|
14. 如何使用多个属性来进行过滤
//在使用许多相类似的有着不同类型的input元素时,
//这种基于精确度的方法很有用
var elements = $(‘#someid input[type=sometype][value=somevalue]‘).get();
15. 如何使用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'
);
|
16. 如何为任何与选择器相匹配的元素设置事件处理程序:
$(
'button.someClass'
).live(
'click'
, someFunction);
//注意,在jQuery 1.4.2中,delegate和undelegate选项
//被引入代替live,因为它们提供了更好的上下文支持
//例如,就table来说,以前你会用
$(
"table"
).each(
function
(){
$(
"td"
,
this
).live(
"hover"
,
function
(){
$(
this
).toggleClass(
"hover"
);
});
});
//现在用
$(
"table"
).delegate(
"td"
,
"hover"
,
function
(){
$(
this
).toggleClass(
"hover"
);
});
|
17. 如何找到一个已经被选中的option元素:
$(
'#someElement'
).find(
'option:selected'
);
|
18. 如何隐藏一个包含了某个值文本的元素:
$(
"p.value:contains('thetextvalue')"
).hide();
|
19. 如何创建嵌套的过滤器:
//允许你减少集合中的匹配元素的过滤器,
//只剩下那些与给定的选择器匹配的部分。在这种情况下,
//查询删除了任何没(:not)有(:has)
//包含class为“selected”(.selected)的子节点。
.filter(
":not(:has(.selected))"
)
|
20. 如何检测各种浏览器:
检测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'
))
|
21. 任何使用has()来检查某个元素是否包含某个类或是元素:
//jQuery 1.4.*包含了对这一has方法的支持。
//该方法找出某个元素是否包含了其他另一个元素类或是其他任何的你正在查找并要在其之上进行操作的东东。
$(
"input"
).has(
".email"
).addClass(
"email_icon"
);
|
22. 如何禁用右键单击上下文菜单:
$(document).bind(
'contextmenu'
,
function
(e){
return
false
;
});
|
23. 如何定义一个定制的选择器
$.expr[
':'
].mycustomselector =
function
(element, index, meta, stack){
// element- 一个DOM元素
// index – 栈中的当前循环索引
// meta – 有关选择器的元数据
// stack – 要循环的所有元素的栈
// 如果包含了当前元素就返回true
// 如果不包含当前元素就返回false };
// 定制选择器的用法:
$(
'.someClasses:test'
).doSomething();
|
24. 如何检查某个元素是否存在
if
($(
'#someDiv'
).length) {
//万岁!!!它存在……
}
|
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. 如何替换串中的词
var el = $(‘#id’);
el.html(el.html().replace(/word/ig, ”));
27. 如何在一段时间之后自动隐藏或关闭元素(支持1.4版本):
//这是1.3.2中我们使用setTimeout来实现的方式
setTimeout(function() {
$(‘.mydiv’).hide(‘blind’, {}, 500)
}, 5000);
//而这是在1.4中可以使用delay()这一功能来实现的方式(这很像是休眠)
$(“.mydiv”).delay(5000).hide(‘blind’, {}, 500);
28. 如何把已创建的元素动态地添加到DOM中:
var
newDiv = $(
'<div></div>'
);
newDiv.attr(
'id'
,
'myNewDiv'
).appendTo(
'body'
);
|
29. 如何限制“Text-Area”域中的字符的个数:
jQuery.fn.maxLength = function(max){
return 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);
}
};
}
});
};
//用法
$('#mytextarea').maxLength(500);
|
30. 如何jQuery注册和禁用jQuery全局事件
//jQuery注册ajax全局事件ajaxStart,ajaxStop:
$(document).ajaxStart(function(){
$(“#background,#progressBar”).show();
}).ajaxStop(function(){
$(“#background,#progressBar”).hide();
});
//ajax请求禁用全局事件:$.ajax() 有个参数global (默认: true) 是否触发全局 AJAX 事件.设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件。
31. 如何在jQuery中克隆一个元素:
var cloned = $(‘#somediv’).clone();
32. 在jQuery中如何测试某个元素是否可见
if($(element).is(‘:visible’)) {
//该元素是可见的
}
33. 如何把一个元素放在屏幕的中心位置:
jQuery.fn.center = function () {
return this.each(function(){
$(this).css({
position:'absolute',
top, ( $(window).height() - this.height() ) / 2 + $(window).scrollTop() + 'px',
left, ( $(window).width() - this.width() ) / 2 + $(window).scrollLeft() + 'px'
});
});
}
//这样来使用上面的函数:
$(element).center();
|
34. 如何把有着某个特定名称的所有元素的值都放到一个数组中:
var arrInputValues = new Array();
$(“input[name='xxx']“).each(function(){
arrInputValues.push($(this).val());
});
35. 如何从元素中除去HTML
(function($) {
$.fn.stripHtml = function() {
var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi;
this.each(function() {
$(this).html( $(this).html().replace(regexp,'') );
});
return $(this);
}
})(jQuery);
//用法:
$('p').stripHtml();
|
36. 如何使用closest来取得父元素:
$(‘#searchBox’).closest(‘div’);
37. 如何使用Firebug和Firefox来记录jQuery事件日志:
// 允许链式日志记录
jQuery.log = jQuery.fn.log = function (msg) {
if (console){
console.log("%s: %o", msg, this);
}
return this;
};
// 用法:
$('#someDiv').hide().log('div hidden').addClass('someClass');
|
38. 如何强制在弹出窗口中打开链接:
$(
'a.popup'
).live(
'click'
,
function
(){
var
newwindow = window.open($(
this
).attr(
'href'
),
''
,
'height=200,width=150'
);
if
(window.focus) {
newwindow.focus();
}
return
false
;
});
|
39. 如何强制在新的选项卡中打开链接:
$(
'a.newTab'
).live(
'click'
,
function
(){
var
newwindow=window.open(
this
.href);
$(
this
).target =
"_blank"
;
return
false
;
});
|
40. 在jQuery中如何使用.siblings()来选择同辈元素
// 不这样做
$(
'#nav li'
).click(
function
(){
$(
'#nav li'
).removeClass(
'active'
);
$(
this
).addClass(
'active'
);
});
//替代做法是
$(
'#nav li'
).click(
function
(){
$(
this
).addClass(
'active'
).siblings().removeClass(
'active'
);
});
|
41. 如何切换页面上的所有复选框:
var tog = false;
// 或者为true,如果它们在加载时为被选中状态的话
$(‘a’).click(function() {
$(“input[type=checkbox]“).attr(“checked”,!tog);
tog = !tog;
});
42. 如何基于一些输入文本来过滤一个元素列表:
//如果元素的值和输入的文本相匹配的话,该元素将被返回
$(‘.someClass’).filter(function() {
return $(this).attr(‘value’) == $(‘input#someId’).val();
})
43. 如何获得鼠标垫光标位置x和y
$(document).ready(function() {
$(document).mousemove(function(e){
$(’#XY’).html(”X Axis : ” + e.pageX + ” | Y Axis ” + e.pageY);
});
});
44. 如何扩展String对象的方法
$.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;
}
});
|
45. 如何规范化写jQuery插件:
(
function
($){
$.fn.extend({
pluginOne:
function
(){
return
this
.each(
function
(){
// my code
});
},
pluginTwo:
function
(){
return
this
.each(
function
(){
// my code
});
}
});
})(jQuery);
|
46. 如何检查图像是否已经被完全加载进来
$(
'#theImage'
).attr(
'src'
,
'image.jpg'
).load(
function
() {
alert(
'This Image Has Been Loaded'
);
});
|
47. 如何使用jQuery来为事件指定命名空间:
//事件可以这样绑定命名空间
$(‘input’).bind(‘blur.validation’, function(e){
// …
});
//data方法也接受命名空间
$(‘input’).data(‘validation.isValid’, true);
48. 如何检查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
}
|
49. 如何让cookie过期:
var
date =
new
Date();
date.setTime(date.getTime() + (x * 60 * 1000));
$.cookie(
'example'
,
'foo'
, { expires: date });
|
50. 如何使用一个可点击的链接来替换页面中任何的URL
$.fn.replaceUrl =
function
() {
var
regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w
#!:.?+=&%@!\-\/]))?)/gi;
return
this
.each(
function
() {
$(
this
).html(
$(
this
).html().replace(regexp,
'<a href="$1">$1</a>'
)
);
});
}
//用法
$(
'p'
).replaceUrl();
|