jQuery介紹(下篇)

jQuery介紹(下篇)css

今天接着昨天的來介紹jQuery的相關屬性和用法。html

 

一:jQuery操做DOMjquery

 

  1. jQuery操做屬性

  1.1設置屬性編程

Ø1.1.1 設置單個屬性api

//第一個參數:須要設置的屬性名瀏覽器

//第二個參數:對應的屬性值函數

attr(name, value);ui

//用法舉例this

$(img).attr(title,」美女」);spa

$(img).attr(alt,「加載失敗」);

Ø1.1.2 設置多個屬性

//參數是一個對象,包含了須要設置的屬性名和屬性值

attr(obj)

//用法舉例

$("img").attr({

    title:"美女",

    alt:"加載失敗",

    style:"opacity:  .5"

});

Ø1.2獲取屬性

//傳入須要獲取的屬性名稱,返回對應的屬性值

attr(name)

//用法舉例

var oTitle = $("img").attr("title");

alert(oTitle);

注意:

1.獲取屬性時,只會獲取到第一個元素對應的屬性,與css方法同樣

2.獲取屬性時,若是該屬性不存在,那麼會返回undefined

Ø1.3移除屬性

//參數:須要移除的屬性名,若是傳空,那麼不會有任何操做,注意,並非移除全部的屬性。區分removeClass

removeAttr(name);

//用法舉例

$("img").removeAttr("title");

Øprop

注意:在jQuery1.6以後,對於checkedselecteddisable這類boolean類型的屬性來講,若是使用attr方法獲取屬性值,獲得的不是truefalse,而是checked以及undefined。,使用prop方法來獲取或者設置checkedselecteddisable這類的值。prop方法使用跟attr方法同樣。

//設置屬性

$(:checked).prop(checked,true);

//獲取屬性

$(:checked).prop(checked);//返回true或者false

2.jQuery操做值與內容

Ø2.1val方法

val方法用於設置和獲取表單元素的值,例如inputselecttextarea的值

//設置值

$(#name).val(「張三」);

//獲取值

$(#name).val();

Ø2.2html方法

//設置內容

$(div).html(<span>這是一段內容</span>);

//獲取內容

$(div).html()

Ø2.3text方法

//設置內容

$(div).text(<span>這是一段內容</span>);

//獲取內容

$(div).text()

注:html方法與text方法的區別:

html方法會識別html標籤,text方法會那內容直接當成字符串,並不會識別html標籤。

3.jQuery操做尺寸

Ø3.1height

設置或者獲取高度

//帶參數表示設置高度

$(img).height(200);

//不帶參數獲取高度

$(img).height();

返回值是number類型(好比200),而使用$(img).css(width)返回的是字符串(好比200px

Ø3.2width

設置獲取寬度,與高度操做功能同樣

//帶參數表示設置寬度

$(img).width(200);

//不帶參數獲取寬度

$(img).width();

4. jQuery操做座標值

Ø4.1  offset

設置或者獲取元素相對於文檔document的位置。

//設置位置

$(selector).offset({left:100, top: 150});

//獲取位置

$(selector).offset();

注意:使用offset操做,若是元素沒有設置定位(默認position:static),則會把position修改成relative.會修改lefttop

Ø4.2position

獲取相對於其最近的有定位的父元素的位置。

// 獲取,返回值爲對象:{left:num, top:num}

$(selector).position();

注意:position方法只能獲取,不能設置

Ø4.3scrollTop

設置或者獲取垂直滾動條的位置

// 有參數表示設置偏移,參數爲數值類型

$(selector).scrollTop(100);

// 無參數表示獲取偏移

$(selector).scrollTop();

Ø4.4scrollLeft

設置或者獲取水平滾動條的位置

// 有參數表示設置偏移,參數爲數值類型

$(selector).scrollLeft(100);

// 無參數表示獲取偏移

$(selector).scrollLeft();

 

二:jQuery事件機制

 

    jQueryJavaScript事件進行了封裝,增長並擴展了事件處理機制。jQuery不只提供了更加優雅的事件處理語法,並且極大的加強了事件的處理能力。

1.  jQuery事件的發展歷程

簡單事件綁定>>bind事件綁定>>delegate事件綁定>>on事件綁定(更經常使用)

Ø1.1簡單事件綁定

click(handler) 單擊事件

mouseenter(handler) 鼠標進入事件

mouseleave(handler) 鼠標離開事件

scroll(handler) 滾動事件

缺點:一次只能綁定一個事件

Ø1.2  bind事件綁定

不推薦使用,jQuery1.7版本後被on取代

//綁定多個事件

//第一個參數:事件類型

//第二個參數:事件處理程序

$("p").bind("click mouseenter", function(){

    //事件響應方法

});

缺點:不支持動態建立出來的元素綁定事件。

Ø1.3 delegate事件綁定

支持動態綁定事件

// 第一個參數:selector,要綁定事件的元素

// 第二個參數:事件類型

// 第三個參數:事件處理函數

$(".parentBox").delegate("p", "click", function(){

    //.parentBox下面的全部的p標籤綁定事件

});

注意:爲何delegate支持動態綁定事件?緣由是事件冒泡機制。由於事件是綁定到父元素上的,由子元素觸發。

Ø1.4  on事件綁定

jQuery1.7以後,jQueryon統一了全部事件的處理方法。

   on事件綁定

優點:最現代的方式,兼容zepto(移動端相似jQuery的一個庫),強烈建議使用。

// 第一個參數:events,綁定事件的名稱能夠是由空格分隔的多個事件(標準事件或者自定義事件)

// 第二個參數:selector, 執行事件的後代元素(可選),若是沒有後代元素,那麼事件將由本身來執行。

// 第三個參數:data,傳遞給處理函數的數據,事件觸發的時候經過event.data來使用(不常使用)

// 第四個參數:handler,事件處理函數

$(selector).on(events[,selector][,data],handler);

 

例子:

// 表示給$(selector)綁定代理事件,當必須是它的內部元素span才能觸發這個事件,支持動態綁定

$(selector).on( "click",span, function() {});

// 表示給$(selector)綁定事件,而且由本身觸發,不支持動態綁定(不使用代理)。

$(selector).on( "click", function() {});

 

2. 事件解綁

Øunbind() 方式(不用)

做用:解綁事件

$(selector).unbind(); //解綁全部的事件

$(selector).unbind(click); //解綁指定的事件

Øundelegate() 方式(不用)

做用:解綁事件

$( selector ).undelegate(); //解綁全部的delegate事件

$( selector).undelegate( click); //解綁全部的click事件

Øoff方式(經常使用)

做用:解綁事件

// 解綁匹配元素的全部事件

$(selector).off();

// 解綁匹配元素的全部click事件

$(selector).off(click);

// 解綁全部代理的click事件,元素自己的事件不會被解綁

$(selector).off( click, **);

3. 事件觸發

簡單事件觸發

$(selector).click(); //觸發 click事件

trigger方法觸發事件

$(selector).trigger(click);

triggerHandler觸發 事件響應方法,不觸發瀏覽器行爲

好比:文本框得到焦點的默認行爲

$(selector).triggerHandler(focus);

 

4. jQuery事件對象()

對象屬性 解釋

event.type 事件類型

event.data 存儲綁定事件時傳遞的附加數據

event.target 點了誰就是誰

event.currentTarget 當前DOM元素,等同於this

event.delegateTarget 代理對象

screenXscreenY 對應屏幕最左上角的值

offsetXoffsetY 點擊的位置距離元素的左上角的位置

clientXclientY 距離頁面左上角的位置(忽視滾動條)

pageXpageY 距離頁面最頂部的左上角的位置(會計算滾動條的距離)

event.switch 鼠標按鍵類型,1=鼠標左鍵 2=鼠標中鍵 3=鼠標右鍵

event.keyCode 按下的鍵盤代碼

event.stopPropagation() 阻止事件冒泡行爲

event.preventDefault() 阻止瀏覽器默認行爲

 

三:jQuery補充

 

1. 鏈式編程

鏈式編程原理:return this;

一般狀況下,只有設置操做才能把鏈式編程延續下去。由於獲取操做的時候,會返回獲取到的相應的值,沒法返回 this

 

end(); // 篩選選擇器會改變jQuery對象的DOM對象,想要回復到上一次的狀態,而且返回匹配元素以前的狀態。

2.  隱式迭代

隱式迭代的意思是:在方法的內部會爲匹配到的全部元素進行循環遍歷,執行相應的方法;而不用咱們再進行循環,簡化咱們的操做,方便咱們調用。

若是獲取的是多元素的值,大部分狀況下返回的是第一個元素的值。

 

3.  each方法

有了隱式迭代,爲何還要使用each函數遍歷?

大部分狀況下是不須要使用each方法的,由於jQuery的隱式迭代特性。

若是要對每一個元素作不一樣的處理,這時候就須要用each方法了。

 

做用:遍歷jQuery對象集合,爲每一個匹配的元素執行一個函數

// 參數一表示當前元素在全部匹配元素中的索引號

// 參數二表示當前元素(DOM對象)

$(selector).each(function(index,element){});

 

4. 多庫共存

咱們知道jQuery佔用了$這個標識符,若是引用的其餘庫也用到$這個標識符,這時候爲了保證每一個庫都能正常使用,這時候就存在了多庫共存的問題。

後引入的$的會覆蓋掉先引入的庫中的$

$ === jQuery

解決辦法:

jQuery$jQuery是兩個相同的變量,所以遇到多庫共存的時候,可讓jquery交出$符的控制權,這個時候仍是可使用$.

console.log($);//function(selector, context){}

 

//$.noConflict();//釋放$的控制權

console.log($);{name:zhangsan,age:12}

 

jQuery(function () {

jQuery("div").html("我不是div的內容");

});

 

5.  jQuery插件機制

  5.1第三方插件

jQuery有着豐富的插件,使用這些插件能給jQuery提供一些額外的功能。

如:jquery.color.js

animate不支持顏色的漸變,可是使用了jquery.color.js後,就能夠支持顏色的漸變了。

如何使用第三方插件:

1.引入jQuery文件

2.引入插件

3.使用插件

 5.2製做插件

全局jQuery函數擴展方法

$.pluginName = function() {};

 

jQuery對象擴展方法

$.fn. pluginName = function() {};

 5.3jQuery UI

jQueryUI專指由jQuery官方維護的UI方向的插件。

官方APIhttp://api.jqueryui.com/category/all/

其餘教程:jQueryUI教程

基本使用:

1.引入jQueryUI的樣式文件

2.引入jQuery

3.引入jQueryUIjs文件

4.使用jQueryUI功能

 

經過jQuery(上篇)jQuery(下篇)的詳細介紹,不知你們是否會熟練使用jQuery了呢?歡迎指正。

相關文章
相關標籤/搜索