jquery小朋友來了,嘻嘻

jQuery 快讀網(wǎng)頁交互開發(fā)

jQuery 簡介

  • jquery 是一個高效叛甫,精簡并且功能豐富的 javascript 工具庫
  • query 本身是選擇的意思层宫,主要對 javascript 中選擇元素的方法進(jìn)行了大量優(yōu)化
  • 版本發(fā)展
    • 1.x 兼容 ie678 工作中常用
    • 2.x 不兼容 ie678 官方調(diào) bug 工作中不建議使用
    • 3.x 不兼容 ie678 高級瀏覽器使用
  • jquery 確實(shí)極大的簡化了 DOM 操作,讓編程變得更加高效簡單

jQuery 基礎(chǔ)

$()

  • 在 jquery 中其监,只有一個全局變量$,避免了全局變量的污染
  • 開始變量不叫$,叫做 jQuery()方法萌腿,在庫中兩個名字并存,都可以使用
  • 經(jīng)典錯誤: $未定義 -- 一般是 jquery 文件有問題

jQuery 對象

  • 通過$()方法獲取到的內(nèi)容就是 jQuery 對象
  • 內(nèi)部封裝了大量的屬性和方法. .css(),.html(),.animate()都是 jQuery 對象的方法
  • 通過$()獲取的元素是一組元素時抖苦,進(jìn)行操作時批量操作
  • 與原生 js 對象的區(qū)別和聯(lián)系:
    • jQuery 對象得到后毁菱,只能使用 jQuery 對象的方法,不能使用原生 js 的方法
    • 原生 js 也不能使用 jQuery 對象的方法
    • jQuery 對象實(shí)際是一個類數(shù)組對象锌历,內(nèi)部包含所有獲取的原生 js 對象贮庞,及大量的 jQuery 的方法和屬性
  • 轉(zhuǎn)換
    • jquery 獲取原生 js 對象的長度
    $("p").length; // 獲取原生js對象的個數(shù)
    $("p").size();
    
    • jQuery 轉(zhuǎn)原生
    var $p = $("p");
    // 利用數(shù)組下標(biāo)
    $p[0].innerHTML = "你好";
    
    • 原生轉(zhuǎn) jQuery
    var p = document.getElementsByTagName("p");
    // 直接用$()包裹原生對象
    $(p).css("background-color", "red");
    

jQuery 選擇器

  • css2.1 和 css3 的所有選擇器,不用考慮兼容 如:$('button:disabled').css();
  • 篩選選擇器
    • $(':first') 第一個
    • $(':last') 最后一個
    • $(':eq(index)') 下標(biāo)為 index 的那個
    • $(':gt(index)') 大于 下標(biāo)為 index 的項(xiàng)
    • $(':lt(index)') 小于下標(biāo)為 index 的項(xiàng)
    • $(':odd') 下標(biāo)為奇數(shù)的項(xiàng)
    • $(':even') 下標(biāo)為偶數(shù)的項(xiàng)
    • $(':not(seletor)') 去除所有與給定選擇器匹配的元素

jQuery 常用方法

html() 方法

  • 相當(dāng)于原生 js 的 innerHTML 屬性 會解析標(biāo)簽
  • 用來設(shè)置獲取元素及內(nèi)容

text() 方法

  • 相當(dāng)于 innerText 屬性 只針對文字內(nèi)容
  • 遇到標(biāo)簽忽視
    • 獲取的僅僅的文本
  • 會將設(shè)置的內(nèi)容究西,標(biāo)簽會被當(dāng)做普通文本

val()方法

  • 獲取表單元素 value 的值的方法 value 屬性
  • 獲取和設(shè)置 有參數(shù)就是設(shè)置 沒有參數(shù)就是獲取
  • $('input').val()

操作標(biāo)簽屬性

  • attr(參數(shù) 1,參數(shù) 2) 設(shè)置 參數(shù) 1:屬性名 參數(shù) 2: 屬性值
  • attr(參數(shù)) 獲取 參數(shù): 屬性名
  • removeAttr(參數(shù)) 刪除 參數(shù):屬性名
  • prop() 直接操作的就是布爾值 disabled checked

css()方法

  • 調(diào)用 css 的屬性值或者更改 css 屬性值
  • css(name,value): name: 字符串格式 css 屬性名 value:設(shè)置或更改的屬性值
  • 一個參數(shù)窗慎,調(diào)用 css 屬性的值 得到某個元素的計(jì)算后的樣式,值為字符串格式
  • value 設(shè)置的是可以不帶單位或者數(shù)值卤材,+= -= 都能識別
  • 復(fù)合屬性可以是-可以是駝峰寫法都可以

操作類名的方法

  • jQuery 操作類名 只會操作指定類名 不會影響其他
  • addClass() 添加類名
  • removeClass() 移除類名 如果不傳遞參數(shù)移除全部類名
  • toggleClass() 類名切換 如果存在移除類名捉邢,如果沒有添加類名
  • hasClass() 判斷類名是否存在 返回布爾值

常用事件方法

  • 點(diǎn)擊事件 click(fn)
$(".btn").click(function () {
  $(".box").toggleClass("demo");
});
  • mouseenter(fn)方法 鼠標(biāo)進(jìn)入一個元素觸發(fā)的事件
  • mouseleave(fn)方法 鼠標(biāo)離開一個元素觸發(fā)的事件
  • mouseover(fn) 有事件冒泡
  • mouseout(fn) 有事件冒泡
  • hover(fn,fn)方法 相當(dāng)于合寫 mouseenter mouseleave
$(".box").hover(
  function () {
    // 鼠標(biāo)移入
    $(this).addClass("demo");
  },
  function () {
    // 鼠標(biāo)離開
    $(this).removeClass("demo");
  }
);

jQuery 關(guān)系查找方法

  • $(this).parent() 找到當(dāng)前元素的父級
  • $(this).children() 找到當(dāng)前元素的所有子級 可以傳遞參數(shù),進(jìn)行二次篩選
  • $(this).siblings() 找到當(dāng)前元素的所有親兄弟元素 可以傳遞參數(shù)商膊,進(jìn)行二次篩選

鏈?zhǔn)秸{(diào)用

  • 可以簡化書寫
  • 除了節(jié)點(diǎn)方法之外伏伐,其他方法執(zhí)行后返回值都是自己
$(this).siblings().css("background-color", "red").html("嘻嘻");
// 自己變紅
$(this)
  .css("background-color", "red")
  // 自己的兄弟變藍(lán)色
  .siblings()
  .css("background-color", "blue")
  // 父級變黃
  .parent()
  .css("background-color", "yellow")
  // 父級的兄弟變粉色
  .siblings()
  .css("background-color", "pink")
  // 父級的孩子變黃綠色
  .children()
  .css("background-color", "yellowgreen");

find() 查找后代元素

// 找到 .box元素的所有span元素 改變寬高
$(".box").find("span").css({
  width: 50,
  height: 50,
});

查找兄弟

  • 查找緊鄰兄弟元素
    • next() 下一個兄弟
    • prev() 前一個兄弟
  • 多選方法
    • nextAll() 后面的所有兄弟
    • prevAll() 前面的所有兄弟
  • 可以傳遞參數(shù),進(jìn)行二次篩選

案例

  • 點(diǎn)擊發(fā)送驗(yàn)證碼
  • 放大鏡切換

jQuery 排序和動畫

eq()方法

  • jQuery 對象是一個類數(shù)組對象晕拆,內(nèi)部所有的 數(shù)據(jù)會進(jìn)行一個大的排序
  • 排序與自己原來的父級沒有關(guān)系藐翎,只與 在 jQuery 對象中的新的位置有關(guān)

index()方法

  • 得到的是它自己在 html 結(jié)構(gòu)中兄弟中下標(biāo)的位置。與 jQuery 大排序沒有關(guān)系

排他思想实幕,簡易 tab 欄

  • jQuery 中可以讓 this 特殊設(shè)置吝镣,讓兄弟 siblings 設(shè)置成默認(rèn)

each()遍歷

  • 對 jQuery 對象中的元素每一個都執(zhí)行函數(shù)內(nèi)部的操作
  • each 方法的基本原理就是 for 循環(huán),從對象的下標(biāo)為 0 的項(xiàng)一直遍歷到最后一項(xiàng)昆庇。然后對每一項(xiàng)進(jìn)行操作
  • 函數(shù)內(nèi)部指向每一個項(xiàng)
  • 參數(shù)是 i,整個對象在 jQuery 大排序?qū)ο笾邢聵?biāo)位置

入口函數(shù)

  • $(document).ready(function(){})
  • 原生 js 中 window.onload 一個頁面只能出現(xiàn)一次
  • jQuery 中入口函數(shù)可以出現(xiàn)多次

顯示和隱藏的方法

  • hide() show() 操作的是 display:none/block
  • toggle() 在顯示和隱藏之間切換
  • 參數(shù): slow,fast,normal 數(shù)字(單位毫秒)
  • 過渡時間內(nèi)伴隨著寬高透明度的變化

滑動顯示和隱藏

  • slideDown() 滑動顯示
  • slideUp() 滑動隱藏
  • slideToggle() 滑動切換
  • 讓元素在 display:none/block 之間切換
  • 參數(shù):不傳 400ms
  • slow,fast,normal 數(shù)字(單位毫秒)
  • 注意事項(xiàng):
    • 若元素沒有寬高就沒有滑動效果
    • 如果設(shè)置寬高末贾,會進(jìn)行上下垂直方向滑動
    • 動畫效果:高度屬性在 0-設(shè)置值之間變化,沒有透明度動畫
    • 如果元素設(shè)置了定位整吆,偏移量方向如果是 bottom 參與了拱撵,滑動方向會發(fā)生變化

淡入淡出

  • fadeIn() 淡入顯示
  • fadeOut() 淡出顯示
  • fadeToggle() 切換
  • fadeTo() 淡入淡出某個效果 必須設(shè)置兩個參數(shù) 時間 和 透明度
  • slow,fast,normal 數(shù)字(單位毫秒)

animate()自定義動畫方法

  • 執(zhí)行 css 屬性集的自定義動畫
  • $().animate(styles,speed,easing,callback);
  • styles: css 的屬性名和運(yùn)動結(jié)束位置的屬性值集合
  • 所有有數(shù)值的屬性都可以發(fā)生變化
  • speed: 動畫整體運(yùn)行的時間 slow,fast,normal 數(shù)字(單位毫秒) 默認(rèn) 400ms
  • easing: 動畫速度 swing(變速) linear(線性 勻速) 默認(rèn)值 swing
  • callback: animate 函數(shù)執(zhí)行完畢后要執(zhí)行的函數(shù)

動畫排隊(duì)現(xiàn)象

  • 同一個元素對象上辉川,定義了多個動畫,會出現(xiàn)動畫排隊(duì)現(xiàn)象
  • 如果是不同的元素對象都有動畫拴测,不會出現(xiàn)排隊(duì)機(jī)制
  • 如果是其他非運(yùn)動的代碼乓旗,也不會等待運(yùn)動完成
  • stop() 停止上一次的動畫 開啟這一次的動畫

動畫延遲 delay()

  • delay()

stop()

  • 立即結(jié)束當(dāng)前動畫

清空動畫排隊(duì)

  • 清除排隊(duì)的動畫,進(jìn)行防騷擾操作
  • 方法 1: stop(true)
  • 方法 2: 利用函數(shù)節(jié)流方法 is(':animated') 返回布爾值 true 正在運(yùn)動集索,flae 沒有運(yùn)動 -- 有 bug
$box.mouseenter(function () {
  if ($(this).children().is(":animated")) {
    return;
  }
  $(this).children().stop(true).slideUp();
});

jQuery 節(jié)點(diǎn)操作

創(chuàng)建和追加元素

  • $('<li></li>') 創(chuàng)建元素
  • 向父元素最后追加
    • $(父).append(新)
    • $(新)appendTo(父)
  • 向父元素的最前面追加
    • $(父).prepend(新)
    • $(新).prependTo(父)
  • 向元素后面追加新的兄弟
    • $(舊).after(新)
    • $(新).insertAfter(舊)
  • 向元素前面追加新的兄弟
    • $(舊).before(新)
    • $(新).insertBefore(舊)

刪除屿愚,清空元素

  • remove() 刪除元素
  • empty() 清空元素 清空內(nèi)部元素和事件
  • html('') 僅清空內(nèi)部元素,不清理事件

克隆元素

  • clone() 克隆元素
  • 參數(shù)為布爾值 false:只克隆內(nèi)部务荆,不克隆事件妆距,默認(rèn)值; true:內(nèi)容事件都克隆函匕,深克隆

操作元素尺寸的方法

  • width() height() width
    • 操作的大小僅僅是內(nèi)容部分
    • width(數(shù)字) 設(shè)置
    • width() 獲取 值是數(shù)字類型
  • innerWidth() innerHeight() width + padding
    • 操作的大小是內(nèi)容部分 + padding
    • 獲取 padding 及以內(nèi)的大小
    • innerWidth(數(shù)字) 設(shè)置 增加或者減少的值設(shè)置給了 width娱据, padding 部分不變
    • innerHeight() 獲取
  • outerWidth() outerHeight() width + padding + border
    • 操作的是內(nèi)容部分 + padding + border
    • 獲取的是 border 及以內(nèi)的大小
    • outerWidth(數(shù)字) 設(shè)置 增加或者減少的值設(shè)置給了 width, padding,border 部分不變
    • outerWidth() 獲取

操作元素的位置

  • offset()
    • 獲取元素距離文檔的位置
    • 返回值是一個對象浦箱,包含了元素的位置
    • 參考位置是整個文檔吸耿,和定位沒關(guān)系
  • position()
    • 距離上級定位參考元素的位置
    • 返回一個對象祠锣, 對象中包含了元素的位置信息
    • 參考位置最近定位的元素(和定位有關(guān)系)
  • scrollTop()
    • 操作卷去的頁面間距
    • srcollTop() 返回值是數(shù)字
    • srcollTop(數(shù)字) 設(shè)置

jQuery 事件和插件

注冊事件 移除事件

  • jQuery.事件名(事件處理函數(shù)) -- 簡易注冊事件
  • on 方法注冊事件
    • 封裝底層其實(shí)是 addEventListener
    • jQuery.on(事件名,事件處理函數(shù))
    • 事件委托:jQuery.on(事件名,選擇器,事件處理函數(shù))
    • 選擇器:子孫元素
  • off 方法移除事件
    • jQuery.off(事件名,事件處理函數(shù)名)
  • trigger 方法觸發(fā)事件
    • jQuery.trigger(事件名)

事件對象

  • 鼠標(biāo)事件對象
    • e.clientX/Y 參照瀏覽器
    • e.pageX/Y 參照文檔
    • e.offsetX/Y 參照元素
  • 鍵盤事件
    • e.keyCode 返回建碼數(shù)字
    • e.altKey/shiftKey/ctrlKey 返回布爾值 檢測是否按下(true)
  • 公共屬性
    • e.target 最初觸發(fā)事件的 DOM 元素
    • e.currentTarget 在事件冒泡階段中的當(dāng)前 DOM 元素
  • 方法
    • e.preventDefault() 阻止默認(rèn)行為
    • e.stopPropagation() 阻止事件行為

多庫共存

  • 解決$沖突問題
    1. 不用$酷窥,使用 jQuery
    2. 釋放$符合的使用權(quán) jQuery.onConflict() 可以用變量接收,以后就用變量調(diào)用 jQuery

jQuery 插件庫

  • 獲取插件伴网,在搜索引擎上搜索插件
  • 插件使用方法
    • 找到并且下載插件
    • 在項(xiàng)目外寫一個demo(先學(xué)會使用蓬推,讓后再加入的項(xiàng)目中)
    • 看源碼,看文檔
  • 注意:
    • 結(jié)構(gòu)必須一致澡腾,標(biāo)簽名不一定
    • 樣式沸伏,可以選擇復(fù)制,也可以自定義
    • 先引入jquery再引入插件庫
    • 復(fù)制源碼动分,看文檔
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末毅糟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子澜公,更是在濱河造成了極大的恐慌姆另,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坟乾,死亡現(xiàn)場離奇詭異迹辐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)甚侣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門明吩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人殷费,你說我怎么就攤上這事印荔〉秃” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵躏鱼,是天一觀的道長氮采。 經(jīng)常有香客問我,道長染苛,這世上最難降的妖魔是什么鹊漠? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮茶行,結(jié)果婚禮上躯概,老公的妹妹穿的比我還像新娘。我一直安慰自己畔师,他們只是感情好娶靡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著看锉,像睡著了一般姿锭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伯铣,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天呻此,我揣著相機(jī)與錄音,去河邊找鬼腔寡。 笑死焚鲜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的放前。 我是一名探鬼主播忿磅,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凭语!你這毒婦竟也來了葱她?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤似扔,失蹤者是張志新(化名)和其女友劉穎吨些,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虫几,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锤灿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了辆脸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片但校。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖啡氢,靈堂內(nèi)的尸體忽然破棺而出状囱,到底是詐尸還是另有隱情术裸,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布亭枷,位于F島的核電站袭艺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叨粘。R本人自食惡果不足惜猾编,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望升敲。 院中可真熱鬧答倡,春花似錦、人聲如沸驴党。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽港庄。三九已至倔既,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鹏氧,已是汗流浹背渤涌。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留度帮,地道東北人歼捏。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓稿存,卻偏偏與公主長得像笨篷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瓣履,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

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