jQuery教程
一、選擇網頁元素
jQuery的基本設計思想和主要用法,就是"選擇某個網頁元素,然後對其進行某種操作"。
- 選擇表達式—CSS選擇器
$(document) | 選擇整個文檔對象 |
$(“#myId”) | 選擇ID為myId的網頁元素 |
$(“div.myClass”) | 選擇class為myClass的div元素 |
$(“input[name=first]”) | 選擇name屬性等於first的input元素 |
-
選擇表達式—jQuery特有表達式
$(“a:first”) | 選擇網頁中第一個a元素 |
$(“tr:odd”) | 選擇表格的奇數行 |
$(“#myForm :input”) |
選擇表單中的input元素 |
$(“div:visible”) | 選擇可見的div元素 |
$(“div:gt(2)”) | 選擇所有的div元素,除了前三個 |
$(“div:animated”) | 選擇當前處於動畫狀態的div元素 |
二、改變結果集
jQuery設計思想之二,就是提供各種強大的過濾器,對結果集進行篩選,縮小選擇結果。
$(“div”).has(“p”); | 選擇包含p元素的div元素 |
$(“div”).not(“.myClass”); | 選擇class不等於myClass的div元素 |
$(“div”).filter(“.myClass”); | 選擇class等於myClass的div元素 |
$(“div”).first(); | 選擇第1個div元素 |
$(“div”).eq(5); | 選擇第6個div元素 |
jQuery也提供了在DOM樹上的一個節點尋找相關其他節點:
$(“div”).next(“p”); | 選擇div元素後面的第一個p元素 |
$(“div”).parent(); | 選擇div元素的父元素 |
$(“div”).closest(“form”); | 選擇離div最近的那個form父元素 |
$(“div”).children(); | 選擇div的所有子元素 |
$(“div”).siblings(); | 選擇div的同級元素 |
三、鏈式操作
jQuery設計思想之三,就是最終選中網頁元素以後,可以對它進行一系列操作,並且所有操作可以連接在一起,以鏈條的形式寫出來。
例如:
- $(“div”).find(“h3”).eq(2).html(“Hello”); //找到div元素,選擇其中的全部h3元素,選取第3個h3元素,將其內容改為hello
- $(“div”).find(“h3”).eq(2).html(“Hello”).end().eq(0).html(“World”); //找到div元素,選擇其中的全部h3元素,選取第3個h3元素,將其內容改為hello,返回選擇全部h3元素這步,選中第1個h3元素,將他的內容改為World
四、元素的操作:取值和賦值
jQuery設計思想之四,就是使用同一個函數,來完成取值(getter)和賦值(setter),即"取值器"與"賦值器"合一。到底是取值還是賦值,由函數的參數決定。
- $(“h1”).html(); //html()沒有參數,表示取出h1的值
- $(“h1”).html(“Hello”); //html()有參數Hello,表示對h1進行賦值
常見的取值和賦值函數
.html() | 取出或設置html內容 |
.text() | 取出或設置text內容 |
.attr() | 取出或設置某個屬性的值 |
.width() | 取出或設置某個元素的寬度 |
.height() | 取出或設置某個元素的高度 |
.val() | 取出某個表單元素的值 |
註:如果結果集包含多個元素,那麽賦值的時候,將對其中所有的元素賦值;取值的時候,則是只取出第一個元素的值(除.text()例外,它取出所有元素的text內容)。
五、元素的操作:移動
jQuery設計思想之五,就是提供兩組方法,來操作元素在網頁中的位置移動。一組方法是直接移動該元素,另一組方法是移動其他元素,使得目標元素達到我們想要的位置。
.insertAfter()和.after() | 在現存元素的外部,從後面插入元素 |
.insertBefore()和.before() | 在現存元素的外部,從前面插入元素 |
.appendTo()和.append() | 在現存元素的內部,從後面插入元素 |
.prependTo()和.prepend() | 在現存元素的內部,從前面插入元素 |
舉例說明.insertAfter()和.after() 差別:
-
- $(“div”).insertAfter($(“p”)); //把div元素移動p元素後面
- $(“p”).after($(“div”)); //把p元素加到div元素前面
六、元素的操作:復制、刪除和創建
元素操作方法:
.clone() | 復制元素 |
.remove() | 刪除元素,不保留被刪除元素的事件 |
.detach() | 刪除元素,保留被刪除元素的事件,利於重新插入文檔時使用 |
.empty() | 清空元素,不刪除元素 |
創建元素
-
- $(“<p>Hello</p>”);
- $(“<li class=‘new’>new list item</li>”);
- $(“ul”).append(“<li>list item</li>”);
七、工具方法
jQuery設計思想之六:除了對選中的元素進行操作以外,還提供一些與元素無關的工具方法(utility)。不必選中元素,就可以直接使用這些方法。
- 理解工具方法的實質:定義在jQuery構造函數上的方法,即jQuery.method(),可以直接調用。
- 操作元素的方法的實質:定義在構造函數的prototype對象上的方法,即jQuery.prototype.method(),必須生成實例(即選中元素)後使用。
常用的工具方法
$.trim() | 去除字符串兩端的空格。 |
$.each() | 遍歷一個數組或對象。 |
$.inArray() | 返回一個值在數組中的索引位置。如果該值不在數組中,則返回-1。 |
$.grep() | 返回數組中符合某種標準的元素。 |
$.extend() | 將多個對象,合並到第一個對象。 |
$.makeArray() | 將對象轉化為數組。 |
$.type() | 判斷對象的類別(函數對象、日期對象、數組對象、正則對象等等)。 |
$.isArray() | 判斷某個參數是否為數組。 |
$.isEmptyObject() | 判斷某個對象是否為空(不含有任何屬性) |
$.isFunction() | 判斷某個參數是否為函數。 |
$.isPlainObject() | 判斷某個參數是否為用"{}"或"new Object"建立的對象。 |
$.support() | 判斷瀏覽器是否支持某個特性。 |
八、事件操作
jQuery設計思想之七,就是把事件直接綁定在網頁元素之上。
例如:
$(“p”).click(function(){
alert(“Hello”);
});
jQuery主要事件
.blur() | 表單元素失去焦點。 |
.change() | 表單元素的值發生變化 |
.click() | 鼠標單擊 |
.dblclick() | 鼠標雙擊 |
.focus() | 表單元素獲得焦點 |
.focusin() | 子元素獲得焦點 |
.focusout() | 子元素失去焦點 |
.hover() | 同時為mouseenter和mouseleave事件指定處理函數 |
.keydown() | 按下鍵盤(長時間按鍵,只返回一個事件) |
.keypress() | 按下鍵盤(長時間按鍵,將返回多個事件) |
.keyup() | 松開鍵盤 |
.load() | 元素加載完畢 |
.mousedown() | 按下鼠標 |
.mouseenter() | 鼠標進入(進入子元素不觸發) |
.mouseleave() | 鼠標離開(離開子元素不觸發) |
.mousemove() | 鼠標在元素內部移動 |
.mouseout() | 鼠標離開(離開子元素也觸發) |
.mouseover() | 鼠標進入(進入子元素也觸發) |
.mouseup() | 松開鼠標 |
.ready() | DOM加載完成 |
.resize() | 瀏覽器窗口的大小發生改變 |
.scroll() | 滾動條的位置發生變化 |
.select() | 用戶選中文本框中的內容 |
.submit() | 用戶遞交表單 |
.toggle() | 根據鼠標點擊的次數,依次運行多個函數 |
.unload() | 用戶離開頁面 |
註:以上事件是.bind()的便捷方式可以用.bind()更靈活的控制事件,例如:
- .bind() //綁定多個事件
$(“input”).bind(
“click change”, //同時綁定click和change事件
function() {
alert(“Hello”);
}
);
- .one() //只運行一次
$(“p”).one(“click”, function() {
alert(“Hello”); //只運行一次,以後的點擊不會運行
});
- .unbind() //解除事件綁定
$(“p”).unbind(“click”);
所有的事件處理函數,都可以接受一個事件對象(event object)作為參數,比如下面例子中的e:
$(“p”).click(function(e) {
alert(e.type); // "click"
});
事件對象屬性和方法:
event.pageX | 事件發生時,鼠標距離網頁左上角的水平距離 |
event.pageY | 事件發生時,鼠標距離網頁左上角的垂直距離 |
event.type | 事件的類型(比如click) |
event.which | 按下了哪一個鍵 |
event.data | 在事件對象上綁定數據,然後傳入事件處理函數 |
event.target | 事件針對的網頁元素 |
event.preventDefault() | 阻止事件的默認行為(比如點擊鏈接,會自動打開新頁面) |
event.stopPropagation() | 停止事件向上層元素冒泡 |
在事件處理函數中,可以用this關鍵字,返回事件針對的DOM元素:
$(“a”).click(function(e) {
if ($(this).attr(“href”).match(“evil”)) { //如果確認為有害鏈接
e.preventDefault(); //阻止打開
$(this).addClass(“evil”); //加上表示有害的class
}
});
.trigger()和riggerHandler()可以自動觸發一個事件
$(“a”).click();
$(“a”).trigger(“click”);
九、特殊效果
jQuery允許對象呈現某些特殊效果。
常用的特殊效果:
.fadeIn() | 淡入, 默認執行時間都是400ms(毫秒) |
.fadeIn() | 淡出, 默認執行時間都是400ms(毫秒) |
.fadeTo() | 調整透明度, 默認執行時間都是400ms(毫秒) |
.hide() | 隱藏元素 |
.show() | 顯示元素 |
.slideDown() | 向下展開,默認執行時間都是400ms(毫秒) |
.slideUp() | 向上卷起, 默認執行時間都是400ms(毫秒) |
.slideToggle() | 依次展開或卷起某個元素,默認執行時間都是400ms(毫秒) |
.toggle() | 依次展示或隱藏某個元素, 默認執行時間都是400ms(毫秒) |
註:可以更改默認執行事件,例如:
$(“h1”).fadeIn(300); // 300毫秒內淡入
$(“h1”).fadeOut(“slow”); // 緩慢地淡出
特效結束後可以執行回調函數,例如:
$(“h1”).fadeOut(300, function() { $(this).remove(); });
動畫特效:.animate()
$(“div”).animate(
{
left : “+=50”, //不斷右移
opacity : 0.25 //指定透明度
},
300, // 持續時間
function() { alert(‘done!‘); } //回調函數
);
.stop() | 停止特效執行 .stop(true) 停止當前動畫 .stop(true,true)立即結束動畫 |
.delay() | 延緩特效執行 |
$.fx.off | 設置為true,則關閉所有網頁特效 |
jQuery教程