JQuery语法
- jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作
基础语法: $(selector).action()
- 美元符号定义 jQuery
- 选择符(selector)”查询”和”查找” HTML 元素
jQuery 的 action() 执行对元素的操作
- $(this).hide() - 隐藏当前元素 - $("p.test").hide() - 隐藏所有 class="test" 的 <p> 元素
JQuery选择器
- jQuery 选择器允许您对 HTML 元素组或单个元素进行操作。
- jQuery 选择器基于元素的 id、类、类型、属性、属性值等”查找”(或选择)HTML 元素。 它基于已经存在的 CSS 选择器,除此之外,它还有一些自定义的选择器。
Query 中所有选择器都以美元符号开头:$()。
元素选择器
- jQuery 元素选择器基于元素名选取元素。
- $(“p”)
- jQuery 元素选择器基于元素名选取元素。
- #id 选择器
- jQuery #id 选择器通过 HTML 元素的 id 属性选取指定的元素。
- .class 选择器
- jQuery 类选择器可以通过指定的 class 查找元素。
- $(“*”)
- 选取所有元素
- $(this)
- 选取当前 HTML 元素
- $(“p.intro”)
- 选取 class 为 intro 的
<p>
元素
- 选取 class 为 intro 的
- $(“p:first”)
- 选取第一个
<p>
元素
- 选取第一个
- $(“ul li:first”)
- 选取第一个
<ul>
元素的第一个<li>
元素
- 选取第一个
- $(“ul li:first-child”)
- 选取每个
<ul>
元素的第一个<li>
元素
- 选取每个
- $(“[href]”)
- 选取带有 href 属性的元素
- $(“a[target=’_blank’]”)
- 选取所有 target 属性值等于 “_blank” 的
<a>
元素 - 选取所有 target 属性值不等于 “_blank” 的
<a>
元素
- 选取所有 target 属性值等于 “_blank” 的
- $(“:button”)
- 选取所有 type=”button” 的<input>
元素 和<button>
元素 - $(“tr:even”)
- 选取偶数位置的
<tr>
元素
- 选取偶数位置的
- $(“tr:odd”)
- 选取奇数位置的
<tr>
元素
- 选取奇数位置的
JQuery事件
- jQuery 是为事件处理特别设计的。
- 页面对不同访问者的响应叫做事件。
- 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。
- $(document).ready() 方法
- 允许我们在文档完全加载完后执行函数
鼠标事件
click() 方法是当按钮点击事件被触发时会调用一个函数
$("p").click(function(){ $(this).hide(); });
dblclick() 方法当双击元素时触发 事件,或规定当发生 dblclick 事件时运行的函数
$("p").dblclick(function(){ $(this).hide(); });
mouseenter() 当鼠标指针穿过元素时触发
$("#p1").mouseenter(function(){ alert('您的鼠标移到了 id="p1" 的元素上!'); });
mouseleave() 当鼠标指针离开元素时,会发生 mouseleave 事件。
$("#p1").mouseleave(function(){ alert("再见,您的鼠标离开了该段落。"); });
mousedown()当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件。
$("#p1").mouseup(function(){ alert("鼠标在段落上松开。"); });
hover()方法用于模拟光标悬停事件。
- 当鼠标移动到元素上时,会触发指定的第一个函数(mouseenter);
当鼠标移出这个元素时,会触发指定的第二个函数(mouseleave)。
$("#p1").hover( function(){ alert("你进入了 p1!"); }, function(){ alert("拜拜! 现在你离开了 p1!"); } );
- focus()
- 当元素获得焦点时,发生 focus 事件。
当通过鼠标点击选中元素或通过 tab 键定位到元素时,该元素就会获得焦点。focus() 方法触发 focus 事件。
$("input").focus(function(){ $(this).css("background-color","#cccccc"); });
- blur() 当元素失去焦点时,发生 blur 事件。
JQuery效果
隐藏与显示:
隐藏和显示 HTML 元素:
$("#hide").click(function(){ $("p").hide(); }); $("#show").click(function(){ $("p").show(); });
语法:
- $(selector).hide(speed,callback);
$(selector).show(speed,callback);
- 可选的 speed 参数规定隐藏/显示的速度,可以取以下值:”slow”、”fast” 或毫秒。
可选的 callback 参数是隐藏或显示完成后所执行的函数名称。
$("button").click(function(){ $("p").hide(1000); });
- toggle() 方法来切换 hide() 和 show() 方法。
- 语法:
- $(selector).toggle(speed,callback);
- 说明:就是显示和隐藏两种功能进行切换
淡入淡出:
- fadeIn() 用于淡入已隐藏的元素。
语法:
$(selector).fadeIn(speed,callback);
- 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。.
可选的 callback 参数是 fading 完成后所执行的函数名称。
$("button").click(function(){ $("#div1").fadeIn();//直接显示 $("#div2").fadeIn("slow");//直接显示 $("#div3").fadeIn(3000);//3s后显示 });
- fadeOut() 方法用于淡出可见元素。
- 语法:
- $(selector).fadeOut(speed,callback); //参数和列子同淡入
- fadeToggle() 方法可以在 fadeIn() 与 fadeOut() 方法之间进行切换。
- 如果元素已淡出,则 fadeToggle() 会向元素添加淡入效果。
- 如果元素已淡入,则 fadeToggle() 会向元素添加淡出效果。
- 语法:
- $(selector).fadeToggle(speed,callback);//就是两种状态相互切换举例和参数解释同淡入、、、这里不做解释
- fadeTo() 方法允许渐变为给定的不透明度(值介于 0 与 1 之间)。
语法:
$(selector).fadeTo(speed,opacity,callback);
- 必需的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。
- fadeTo() 方法中必需的 opacity 参数将淡入淡出效果设置为给定的不透明度(值介于 0 与 1 之间)。
可选的 callback 参数是该函数完成后所执行的函数名称。
$("button").click(function(){ $("#div1").fadeTo("slow",0.15); $("#div2").fadeTo("slow",0.4); $("#div3").fadeTo("slow",0.7); });//就是把颜色变淡
滑动
- slideDown() 方法用于向下滑动元素。
语法:
$(selector).slideDown(speed,callback);
- 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。
可选的 callback 参数是滑动完成后所执行的函数名称。
$("#flip").click(function(){ $("#panel").slideDown(); });
- slideUp() 方法用于向上滑动元素。
- 语法:
- $(selector).slideUp(speed,callback);//参数和举例参照向下滑动实例
- slideToggle() 方法可以在 slideDown() 与 slideUp() 方法之间进行切换。
- 如果元素向下滑动,则 slideToggle() 可向上滑动它们。
- 如果元素向上滑动,则 slideToggle() 可向下滑动它们。
- 语法:
- $(selector).slideToggle(speed,callback);//向上、向下滑动进行切换
动画:
- animate() 方法用于创建自定义动画。
语法:
$(selector).animate({params},speed,callback);
- 必需的 params 参数定义形成动画的 CSS 属性。
- 可选的 speed 参数规定效果的时长。它可以取以下值:”slow”、”fast” 或毫秒。
可选的 callback 参数是动画完成后所执行的函数名称。
$("button").click(function(){ $("div").animate({left:'250px'}); });
animate() - 操作多个属性
可以用 animate() 方法来操作所有 CSS 属性吗? 是的,几乎可以!不过,需要记住一件重要的事情:当使用 animate() 时,必须使用 Camel 标记法书写所有的属性名,比如,必须使用 paddingLeft 而不是 padding-left,使用 marginRight 而不是 margin-right,等等。 $("button").click(function(){ $("div").animate({ left:'250px', opacity:'0.5', height:'150px', width:'150px' }); });
animate() - 使用相对值也可以定义相对值(该值相对于元素的当前值)。需要在值的前面加上 += 或 -=:
$("button").click(function(){ $("div").animate({ left:'250px', height:'+=150px',//点击效果会一致增加 width:'+=150px' }); });
- animate() - 使用预定义的值
- 您甚至可以把属性的动画值设置为 “show”、”hide” 或 “toggle”:
$("button").click(function(){
$("div").animate({
height:'toggle'
});
- 您甚至可以把属性的动画值设置为 “show”、”hide” 或 “toggle”:
animate() - 使用队列功能
Query 提供针对动画的队列功能。这意味着如果您在彼此之后编写多个 animate() 调用,jQuery 会创建包含这些方法调用的”内部”队列。然后逐一运行这些 animate 调用。
$("button").click(function(){ var div=$("div"); div.animate({height:'300px',opacity:'0.4'},"slow"); div.animate({width:'300px',opacity:'0.8'},"slow"); div.animate({height:'100px',opacity:'0.4'},"slow"); div.animate({width:'100px',opacity:'0.8'},"slow"); });
停止动画:
- stop() 方法用于停止动画或效果,在它们完成之前。
- stop() 方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画。
- 语法:;
- $(selector).stop(stopAll,goToEnd);
- 可选的 stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。
- 可选的 goToEnd 参数规定是否立即完成当前动画。默认是 false。
Callback方法:
Callback 函数在当前动画 100% 完成之后执行。
- 许多 jQuery 函数涉及动画。这些函数也许会将 speed 或 duration 作为可选参数。
- 例子:$(“p”).hide(“slow”)
speed 或 duration 参数可以设置许多不同的值,比如 “slow”, “fast”, “normal” 或毫秒。
$("button").click(function(){ $("p").hide("slow",function(){ alert("段落现在被隐藏了"); }); });
链(Chaining):
- 通过 jQuery,可以把动作/方法链接在一起。
- Chaining 允许我们在一条语句中运行多个 jQuery 方法(在相同的元素上)。
- 语法:
- $(“#p1”).css(“color”,”red”).slideUp(2000).slideDown(2000);//颜色先变红、再向上滑动、最后向下滑动
JQuery HTTML
获取内容和属性:
- DOM = Document Object Model(文档对象模型)
- text() - 设置或返回所选元素的文本内容
- html() - 设置或返回所选元素的内容(包括 HTML 标记)
val() - 设置或返回表单字段的值
$("#btn1").click(function(){ alert("Text: " + $("#test").text()); }); $("#btn2").click(function(){ alert("HTML: " + $("#test").html()); }); $("#btn1").click(function(){ alert("值为: " + $("#test").val()); });
attr() 方法用于获取属性值。
$("button").click(function(){ alert($("#runoob").attr("href")); });
设置内容和属性:
- text()、html() 以及 val() 的回调函数
回调函数有两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值。然后以函数新值返回您希望使用的字符串。
$("#btn1").click(function(){ $("#test1").text(function(i,origText){ return "旧文本: " + origText + " 新文本: Hello world! (index: " + i + ")"; }); });
attr() 方法也用于设置/改变属性值。
$("button").click(function(){ $("#runoob").attr({ "href" : "http://www.runoob.com/jquery", "title" : "jQuery 教程" }); });
attr() 的回调函数
方法 attr(),也提供回调函数。回调函数有两个参数:被选元素列表中当前元素的下标,以及原始(旧的)值。然后以函数新值返回您希望使用的字符串。
$("button").click(function(){ $("#runoob").attr("href", function(i,origValue){ return origValue + "/jquery"; }); });
添加元素:
- append() - 在被选元素的结尾插入内容
- prepend() - 在被选元素的开头插入内容
- after() - 在被选元素之后插入内容
before() - 在被选元素之前插入内容
ppend() 和 prepend() 方法能够通过参数接收无限数量的新元素。可以通过 jQuery 来生成文本/HTML(就像上面的例子那样),或者通过 JavaScript 代码和 DOM 元素。
function appendText() { var txt1="<p>文本。</p>";// 使用 HTML 标签创建文本 var txt2=$("<p></p>").text("文本。"); // 使用 jQuery 创建文本 var txt3=document.createElement("p"); txt3.innerHTML="文本。"; // 使用 DOM 创建文本 text with DOM $("body").append(txt1,txt2,txt3); // 追加新元素 }
删除元素:
- remove() - 删除被选元素(及其子元素)
- empty() - 从被选元素中删除子元素
remove() 方法也可接受一个参数,允许您对被删元素进行过滤。该参数可以是任何 jQuery 选择器的语法。下面的例子删除 class=”italic” 的所有
<p>
元素:$("p").remove(".italic"); $("#div1").empty();
获取并设置CSS类:
- addClass() - 向被选元素添加一个或多个类
- removeClass() - 从被选元素删除一个或多个类
- toggleClass() - 对被选元素进行添加/删除类的切换操作
css() - 设置或返回样式属性
$("button").click(function(){ $("h1,h2,p").addClass("blue"); $("div").addClass("important"); });
CSS()方法:
- css() 方法设置或返回被选元素的一个或多个样式属性。
- 如需返回指定的 CSS 属性的值,请使用如下语法:
- css(“propertyname”);//获取其值
- 如需设置指定的 CSS 属性,请使用如下语法:
- css(“propertyname”,”value”);//设置值
- 如需设置多个 CSS 属性,请使用如下语法:
- css({“propertyname”:”value”,”propertyname”:”value”,…});
尺寸:
- width() 方法设置或返回元素的宽度(不包括内边距、边框或外边距)。
- height() 方法设置或返回元素的高度(不包括内边距、边框或外边距)。
- innerWidth() 方法返回元素的宽度(包括内边距)。
- innerHeight() 方法返回元素的高度(包括内边距)。
- outerWidth() 方法返回元素的宽度(包括内边距和边框)。
- outerHeight() 方法返回元素的高度(包括内边距和边框)。
JQuery遍历
- 下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。
<div>
元素是<ul>
的父元素,同时是其中所有内容的祖先。<ul>
元素是<li>
元素的父元素,同时是<div>
的子元素- 左边的
<li>
元素是<span>
的父元素,<ul>
的子元素,同时是<div>
的后代。 <span>
元素是<li>
的子元素,同时是<ul>
和<div>
的后代。- 两个
<li>
元素是同胞(拥有相同的父元素)。 - 右边的
<li>
元素是<b
> 的父元素,<ul>
的子元素,同时是<div>
的后代。 <b>
元素是右边的<li>
的子元素,同时是<ul>
和<div>
的后代。
祖先:(向上遍历 DOM 树 )
parent() 方法返回被选元素的直接父元素。
$(document).ready(function(){ $("span").parent(); });
parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (
<html>
)。$(document).ready(function(){ $("span").parents("ul"); });//所有 `<span> `元素的所有祖先,并且它是` <ul> `元素
parentsUntil() 方法返回介于两个给定元素之间的所有祖先元素。
$(document).ready(function(){ $("span").parentsUntil("div"); });//返回介于 `<span> `与 `<div> `元素之间的所有祖先元素
后代:(向下遍历 DOM 树)
children() 方法返回被选元素的所有直接子元素。
该方法只会向下一级对 DOM 树进行遍历。
$(document).ready(function(){ $("div").children("p.1"); }); //返回类名为 "1" 的所有 <p> 元素,并且它们是 <div> 的直接子元素
find() 方法返回被选元素的后代元素,一路向下直到最后一个后代。
$(document).ready(function(){ $("div").find("span"); });//返回属于 <div> 后代的所有 <span> 元素;如果是星号就表示所有子元素
同胞(siblings):
siblings() 方法返回被选元素的所有同胞元素
$(document).ready(function(){ $("h2").siblings(); });//返回 <h2> 的所有同胞元素
- next() 方法返回被选元素的下一个同胞元素。
- nextAll() 方法返回被选元素的所有跟随的同胞元素。
nextUntil() 方法返回介于两个给定参数之间的所有跟随的同胞元素。
$(document).ready(function(){ $("h2").nextUntil("h6"); });//返回介于 <h2> 与 <h6> 元素之间的所有同胞元素
- prev(), prevAll() 以及 prevUntil() 方法的工作方式与上面的方法类似,只不过方向相反而已:它们返回的是前面的同胞元素(在 DOM 树中沿着同胞元素向后遍历,而不是向前)。
过滤:
first() 方法返回被选元素的首个元素。
$(document).ready(function(){ $("div p").first(); });//选取首个 <div> 元素内部的第一个 <p> 元素
- last() 方法返回被选元素的最后一个元素
eq() 方法返回被选元素中带有指定索引号的元素。
索引号从 0 开始,因此首个元素的索引号是 0 而不是 1。
$(document).ready(function(){ $("p").eq(1); });//选取第二个 <p> 元素(索引号 1)
filter() 方法允许您规定一个标准。不匹配这个标准的元素会被从集合中删除,匹配的元素会被返回
$(document).ready(function(){ $("p").filter(".url"); });//返回带有类名 "url" 的所有 <p> 元素
- not() 方法返回不匹配标准的所有元素。
- 提示:not() 方法与 filter() 相反。
AJAX
- AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。
- load() 方法从服务器加载数据,并把返回的数据放入被选元素中
- 语法:
- $(selector).load(URL,data,callback);
- 必需的 URL 参数规定您希望加载的 URL。
- 可选的 data 参数规定与请求一同发送的查询字符串键/值对集合。
- 可选的 callback 参数是 load() 方法完成后所执行的函数名称。
- $(selector).load(URL,data,callback);
可选的 callback 参数规定当 load() 方法完成后所要允许的回调函数。回调函数可以设置不同的参数:
- responseTxt - 包含调用成功时的结果内容
- statusTXT - 包含调用的状态
xhr - 包含 XMLHttpRequest 对象
$("button").click(function(){ $("#div1").load("demo_test.txt",function(responseTxt,statusTxt,xhr){ if(statusTxt=="success") alert("外部内容加载成功!"); if(statusTxt=="error") alert("Error: "+xhr.status+": "+xhr.statusText); }); });
- get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据
- $.get() 方法通过 HTTP GET 请求从服务器上请求数据。
- 语法:
- $.get(URL,callback);
- 必需的 URL 参数规定您希望请求的 URL。
- 可选的 callback 参数是请求成功后所执行的函数名。
- $.get(URL,callback);
- $.post() 方法通过 HTTP POST 请求从服务器上请求数据。
语法:
$.post(URL,data,callback);
- 必需的 URL 参数规定您希望请求的 URL。
- 可选的 data 参数规定连同请求发送的数据。
可选的 callback 参数是请求成功后所执行的函数名。
$("button").click(function(){ $.post("/try/ajax/demo_test_post.php", { name:"菜鸟教程", url:"http://www.runoob.com" }, function(data,status){ alert("数据: \n" + data + "\n状态: " + status); }); });
JQuery其他
noConflict() 方法会释放会 $ 标识符的控制,这样其他脚本就可以使用它了。
意义:1.其他一些 JavaScript 框架包括:MooTools、Backbone、Sammy、Cappuccino、Knockout、JavaScript MVC、Google Web Toolkit、Google Closure、Ember、Batman 以及 Ext JS。 2.其中某些框架也使用 $ 符号作为简写(就像 jQuery),如果您在用的两种不同的框架正在使用相同的简写符号,有可能导致脚本停止运行。 $.noConflict(); jQuery(document).ready(function(){ jQuery("button").click(function(){ jQuery("p").text("jQuery 仍然在工作!"); }); });//当然,您仍然可以通过全名替代简写的方式来使用 jQuery
您也可以创建自己的简写。noConflict() 可返回对 jQuery 的引用,您可以把它存入变量,以供稍后使用。请看这个例子:
var jq = $.noConflict(); jq(document).ready(function(){ jq("button").click(function(){ jq("p").text("jQuery 仍然在工作!"); }); });
如果你的 jQuery 代码块使用
$
写,并且您不愿意改变这个快捷方式,那么您可以把 $ 符号作为变量传递给 ready 方法。这样就可以在函数内使用$
号了 - 而在函数外,依旧不得不使用 “jQuery”:$.noConflict(); jQuery(document).ready(function($){ $("button").click(function(){ $("p").text("jQuery 仍然在工作!"); }); });