jQuery入門

一、選擇網(wǎng)頁元素

jQuery的基本設(shè)計思想和主要用法谤牡,就是“選擇某個網(wǎng)頁元素副硅,然后對其進行某種操作”
使用JQuery的第一步,就是將一個選擇表達式翅萤,放進構(gòu)造函數(shù)jQuery( ) (簡寫$),然后得到被選中的元素

選擇表達式的可以是css選擇器

$(document) //選擇整個文檔對象
$('#mayId') //選擇id為myId的網(wǎng)頁元素
$('div.myClass') //選擇class為myClass的div元素
$('input[name="name"]') //選擇name屬性等于first的input元素

也可以是jQuery特有的表達式

$('a:first')  //選擇網(wǎng)頁中的第一個a元素
$('tr:odd') //選擇表格中的奇數(shù)行
$('#myForm :input')  //選擇表單中的input元素
$('div: visible') //選擇可見的div元素
$('div:gt(2)') //選擇所有的div元素恐疲,除了前三個
$('div:animated') //選擇當前處于動畫狀態(tài)的div元素

二、改變結(jié)果集

jQuery設(shè)計思想之二断序,就是提供各種強大的過濾器流纹,對結(jié)果進行篩選,縮小選擇結(jié)果违诗。

$('div').has('p'); // 選擇包含p的div元素
$('div').not('.myClass') // 選擇class 不等于myClass的div元素
$('div').filter('.myClass') //選擇class等于myClass的div元素
$('div').first() //選擇第一個div元素
$('div').eq(5)  //選擇第六個div元素 

有時候漱凝,我們需要從結(jié)果集出發(fā),移動到附近的相關(guān)元素诸迟,jQuery也提供了在DOM樹的移動方法

$('div').next('p'); //選擇div元素后面的第一個p元素
$('div').parent();  //選擇div的父元素
$('div').closest('form');  //選擇div最近的那個form父元素
$('div').childern();  //選擇div的所有子元素
$('div').siblings(); //選擇div的同級元素 

三茸炒、鏈式操作

顧名思義

$('div').find('h3').eq(2).html('hi');

分解開來

$('div')  //找到div元素
  .find('h3')  //選擇其中的h3元素
  .eq(2)  //選擇第三個h3元素
  .html('hello')  //將它的內(nèi)容改為Hello

這是jQuery最令人稱道、最方便的特點阵苇。它的原理在于每一步的jQuery操作壁公,返回的都是一個jQuery對象,所以不同操作可以連在一起绅项。

jQuery還提供了.end()方法紊册,使得結(jié)果集可以后退一步:

$('div')
  .find('h3')
  .eq(2)
  .html('hello)
  .end()  //退回到選中所有h3元素的那一步
  .eq(0)  //選中第一個h3元素
  .html('ni')  //將它的內(nèi)容改為ni

四、元素操作

操作網(wǎng)頁元素快耿,最常見的是取得他們的值囊陡,然后給他們賦值芳绩。
jQuery的設(shè)計思想之四,就是使用同一個函數(shù)撞反,來完成取值(getter)和賦值(setter)妥色,到底是取值還是賦值,由函數(shù)參數(shù)決定遏片。

$('h1').html();  //html()沒有參數(shù)嘹害,表示取得h1的值
$('h1').html('hello');  // html()有參數(shù),表示將h1的值設(shè)置為“hello”

常見的取值和賦值的函數(shù)

  .html()  //取出或設(shè)置html內(nèi)容
  .text()  //取出或者設(shè)置text內(nèi)容
  .attr()  //取出或者設(shè)置某個屬性的值
  .width()  //取出或者設(shè)置某個元素的寬度
  .height()  //取出或者設(shè)置某個元素的高度
  .val()  //取出或者設(shè)置某個表單的值

需要注意的是吮便,如果結(jié)果集包含多個元素笔呀,那么賦值的時候,將對其中所有的元素賦值线衫;取值的時候凿可,則是只取出第一個元素的值(.text()例外,它取出所有元素的text內(nèi)容)授账。

五、元素的操作惨驶、移動

jQuery 的設(shè)計思想之五白热,就是提供兩組方法,來操作元素在網(wǎng)頁中的位置移動粗卜。一組是直接移動該元素屋确,;另一種是移動其他元素续扔,使得目標元素達到我們想要的位置攻臀。

假設(shè)我們選中一個div元素,需要把它移動到p元素后面

第一種方法是使用 .insertAfter(), 把div移到p元素后面

  $('div').insertAfter($('p'));

第二種方法是使用 .after(),把p放到div前面

    $('p').after($('div'));

表面上看纱昧,這兩種方法的效果是一樣的刨啸,唯一的不同似乎只是操作視角的不同。但是實際上识脆,它們有一個重 大差別设联,那就是返回的元素不一樣。第一種方法返回div元素灼捂,第二種方法返回p元素离例。你可以根據(jù)需要,選擇到底使用哪一種方法悉稠。

這種操作方法一共有四對

  .insertAfter()和.after():在現(xiàn)存元素的外部宫蛆,從后面插入元素
  .insertBefore()和.before():在現(xiàn)存元素的外部,從前面插入元素
  .appendTo()和.append():在現(xiàn)存元素的內(nèi)部的猛,從后面插入元素
  .prependTo()和.prepend():在現(xiàn)存元素的內(nèi)部耀盗,從前面插入元素

#六辑甜、元素的操作:復(fù)制、刪除和創(chuàng)建

除了元素的位置移動之外袍冷,jQuery還提供其他幾種操作元素的重要方法磷醋。
復(fù)制元素使用.clone()
刪除元素使用.remove().detach()胡诗。兩者的區(qū)別在于邓线,前者不保留被刪除元素的事件,后者保留煌恢,有利于重新插入文檔時使用骇陈。
清空元素內(nèi)容(但是不刪除該元素)使用.empty()
創(chuàng)建新元素的方法非常簡單瑰抵,只要把新元素直接傳入jQuery的構(gòu)造函數(shù)就行了:

 $('<p>Hello</p>');
  $('<li class="new">new list item</li>');
  $('ul').append('<li>list item</li>');

七你雌、工具方法

jQuery設(shè)計思想之六:除了對選中的元素進行操作以外,還提供一些與元素無關(guān)的工具方法(utility)二汛。不必選中元素婿崭,就可以直接使用這些方法。

如果你懂得Javascript語言的繼承原理肴颊,那么就能理解工具方法的實質(zhì)氓栈。它是定義在jQuery構(gòu)造函數(shù)上的方法,即jQuery.method()婿着,所以可以直接使用授瘦。而那些操作元素的方法,是定義在構(gòu)造函數(shù)的prototype對象上的方法竟宋,即jQuery.prototype.method()提完,所以必須生成實例(即選中元素)后使用。如果不理解這種區(qū)別丘侠,問題也不大徒欣,只要把工具方法理解成,是像javascript原生函數(shù)那樣婉陷,可以直接使用的方法就行了帚称。

常用的工具方法有以下幾種:

  $.trim()  //去除字符串兩端的空格。
  $.each()  //遍歷一個數(shù)組或?qū)ο蟆?  $.inArray()  //返回一個值在數(shù)組中的索引位置秽澳。如果該值不在數(shù)組中闯睹,則返回-1。
  $.grep()  //返回數(shù)組中符合某種標準的元素担神。
  $.extend()  //將多個對象楼吃,合并到第一個對象。
  $.makeArray()  //將對象轉(zhuǎn)化為數(shù)組。
  $.type()  //判斷對象的類別(函數(shù)對象孩锡、日期對象酷宵、數(shù)組對象、正則對象等等)躬窜。
  $.isArray()  //判斷某個參數(shù)是否為數(shù)組浇垦。
  $.isEmptyObject()  //判斷某個對象是否為空(不含有任何屬性)。
  $.isFunction()  // 判斷某個參數(shù)是否為函數(shù)荣挨。
  $.isPlainObject()  //判斷某個參數(shù)是否為用"{}"或"new Object"建立的對象男韧。
  $.support()  //判斷瀏覽器是否支持某個特性。

八默垄、事件操作

jQuery設(shè)計思想之七此虑,就是把直接綁定在網(wǎng)頁元素之上。

$('p').click(function(){
    alert('hi');
})

目前口锭,jQuery主要支持以下是件

.blur()  //表單失去焦點
.change()  //表單元素的值發(fā)生變化
.click()  //鼠標單擊
.dbclick()  //鼠標雙擊
.focus()  //表單元素獲得焦點
.focusin()  //子元素獲得焦點
.focusout()  //子元素失去焦點
.hover()  //  同時為mouseenter和mouseleave事件指定處理函數(shù)
.keydown()  //按下鍵盤(長時間按鍵朦前,只返回一個事件)
.keypress()  //按下鍵盤(長時間按鍵,將返回多個事件)
.keyup()  //  松開鍵盤
.load()  //元素加載完畢
.mousedown()  //按下鼠標
.mouseenter()  //鼠標進入(進入子元素不觸發(fā))
.mouseleave()  //鼠標離開(離開子元素不觸發(fā))
.mousemove()  //鼠標在元素內(nèi)部移動
.mouseout()  // 鼠標離開(離開子元素也觸發(fā))
.mouseover()  //鼠標進入(進入子元素也觸發(fā))
.mosueup()  //松開鼠標
.ready()  //DOM加載完成
.resize()  //瀏覽器的窗口大小發(fā)生改變
.scroll()  // 滾動條的位置發(fā)生變化
.select()  //用戶選中文本框中的內(nèi)容
.submit()  //用戶提交表單
.toggle()  //根據(jù)鼠標點擊的次數(shù)鹃操,依次運行多個函數(shù)
.unload()  //用戶離開頁面

以上這些事件在jQuery內(nèi)部韭寸,都是.bind()的便捷方式。使用.bind()可以靈活地控制事件组民,比如為多個事件綁定同一函數(shù):

$('input').bind(
  'click change',  //同時綁定click和change事件
  function(){
      alert('hi');
  }
);

有時棒仍,你只想執(zhí)行一次,這時可以使用.one() 方法臭胜。

$('p').one("click",function(){
    alert('hi');  // 只運行一次,以后的點擊不會執(zhí)行
})

.unbind()用來解除事件綁定

$('p').unbind('click');

所有的事件處理函數(shù),都可以接受一個事件對象(event object)作為參數(shù),比如下面例子中的e:

$('p').click(function(e){
    alert(e.type);  //  'click'
});

這個事件對象有一些很有用的屬性和方法:

event.pageX  // 事件發(fā)生時,鼠標距離網(wǎng)頁左上角的水平距離
event.pageY  // 事件發(fā)生時癞尚,鼠標距離網(wǎng)頁左上角的垂直距離
event.type  //事件的類型(比如click)
event.witch  //按下哪一個鍵
event.data  //在事件對象上綁定數(shù)據(jù)耸三,然后傳入事件處理函數(shù)
event.target  // 事件針對的網(wǎng)頁元素
event.preventDefault()  //阻止事件的默認行為(比如點擊鏈接,會自動打開新頁面)
.event.stopPropagation()  // 停止事件向上層元素冒泡

在事件處理函數(shù)中浇揩,可以用this關(guān)鍵字仪壮,返回事件針對的DOM元素

$('a').click(function(e){
  if($(this).attr('href').math('evil')){  //如果確認為有害鏈接
        e.preventDefault();  //阻止打開
        $(this).addClass('evil');  //加上表示有害的class
  }
})

有兩種方法可以自動觸發(fā)一個事件。一種是直接使用事件函數(shù)胳徽,另一種是使用.trigger()或.triggerHandler().

$('a').click();
$('a').trigger('click');

九积锅、特殊效果

最后,jQuery允許對象呈現(xiàn)某些特殊效果养盗。

$('h1').show();  // 展現(xiàn)一個h1標題

常用特殊效果如下

.fadeIn()  //淡入
.fadeOut()  //淡出
.fadeTo()  //調(diào)整透明度
.hide()  //隱藏元素
.show()  //顯示元素
.slideDown()  //向下展開
.slideUp()  //向上卷起
.slideToggle()  //依次展開或卷起某個元素

除了.show()和hide()缚陷,所有其他特效的默認執(zhí)行時間都是400ms,但你可以改變這個值往核。

$('h1').fadeIn(300);  //300毫秒內(nèi)淡入
$('h1').fadeOut('slow');  //緩慢地淡出

在特效結(jié)束后箫爷,可以指定執(zhí)行某個函數(shù)。

$('p').fadeOut(300,function(){$(this).remove});

更復(fù)雜的動畫,可以用.animate()自定義虎锚。

$('div').animate(
  {
      left: "+=50",  //不斷右移
      opacity : 0.25  //指定透明度
  }硫痰,
  300,  // 持續(xù)時間
  function(){    //回調(diào)函數(shù)
        alert('hi');
    }
)

stop()和.delay()用來停止或延緩特效的執(zhí)行
$.fx.off如果設(shè)置為true,則關(guān)閉所有的網(wǎng)頁特效

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窜护,一起剝皮案震驚了整個濱河市效斑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柱徙,老刑警劉巖缓屠,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坐搔,居然都是意外死亡藏研,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門概行,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蠢挡,“玉大人,你說我怎么就攤上這事凳忙∫堤ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵涧卵,是天一觀的道長勤家。 經(jīng)常有香客問我,道長柳恐,這世上最難降的妖魔是什么伐脖? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮乐设,結(jié)果婚禮上讼庇,老公的妹妹穿的比我還像新娘。我一直安慰自己近尚,他們只是感情好蠕啄,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著戈锻,像睡著了一般歼跟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上格遭,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天哈街,我揣著相機與錄音,去河邊找鬼如庭。 笑死叹卷,一個胖子當著我的面吹牛撼港,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播骤竹,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼帝牡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蒙揣?” 一聲冷哼從身側(cè)響起靶溜,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎懒震,沒想到半個月后罩息,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡个扰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年瓷炮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片递宅。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡娘香,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出办龄,到底是詐尸還是另有隱情烘绽,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布俐填,位于F島的核電站安接,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏英融。R本人自食惡果不足惜盏檐,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驶悟。 院中可真熱鬧糯笙,春花似錦、人聲如沸撩银。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽额获。三九已至,卻和暖如春恭应,著一層夾襖步出監(jiān)牢的瞬間抄邀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工昼榛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留境肾,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像奥喻,于是被迫代替她去往敵國和親偶宫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 題目1: jQuery 能做什么环鲤? 選擇網(wǎng)頁元素改變結(jié)果集元素的操作:取值和賦值元素的操作:移動元素的操作:復(fù)制纯趋、...
    QQQQQCY閱讀 185評論 0 1
  • jQuery是一個javascript庫,它可以方便的選取HTML元素冷离,并改變CSS樣式吵冒,同時執(zhí)行酷炫的動畫。如何...
    at小宇閱讀 322評論 0 3
  • 饑人谷_李棟 讀了阮一峰的教程之后西剥,作為一個新人痹栖,為了方便加深記憶,做了下簡化瞭空,方便使用 jQuery可以實現(xiàn)以下...
    xingkong_s閱讀 390評論 3 8
  • 零) js / ajax / json / jQuery js: 基于對象, 解釋型, 事件驅(qū)動, 瀏覽器交互執(zhí)行...
    奮斗的老王閱讀 766評論 0 50
  • 日記停下來好幾天揪阿,實在是太忙。這幾天微信沒有回復(fù)的匙铡,抱歉抱歉图甜。去棚里打掃,安靜得沒有一點聲音鳖眼,太安靜了黑毅。心里有點想...
    朱泓默閱讀 1,137評論 5 7