針對(duì)上一篇jQuery進(jìn)行一點(diǎn)補(bǔ)充

jQuery事件

  • 單個(gè)事件注冊(cè)
    • 語(yǔ)法:element.事件(function(){});例如:$("div").click(function(){事件處理程序}),其他事件與原生基本一致
    • 比如:mouseover馏谨、mouseout蛀醉、blurfocus腐魂、change咧最、keydown捂人、keyup御雕、resizescroll

事件綁定

  • 事件處理on()綁定事件
    • on()方法在匹配元素上綁定一個(gè)或多個(gè)事件的事件處理函數(shù)
    • 語(yǔ)法規(guī)范:element.on(events,[selector],fn)
      • events:一個(gè)或多個(gè)用空格分隔的事件類型先慷,如:clickkeydown
      • selector:元素的子元素選擇器
      • fn:回調(diào)函數(shù) 即綁定在元素身上的偵聽(tīng)函數(shù)
<style>
    div{
        width: 100px;
        height: 100px;
        background-color: #777;
    }
</style>
<div></div>
<!-- 此處引入jQuery文件,你就當(dāng)這個(gè)文件存在吧 -->
<script src="jquery.min.js"></script>
<script>
    $(function() {
        // 單個(gè)事件注冊(cè)
        $("div").click(function() {
            $(this).css("background", "blue");
        });
        $("div").mouseenter(function() {
            $(this).css("background", "red");
        });

        // 事件處理on()
        $("div").on({
            click: function() {
                $(this).css("background", "blue");
            },
            mouseenter: function() {
                $(this).css("background", "red");
            }
            mouseleave: function() {
                $(this).css("background", "purple");
            }
        });
    })
</script>

on()方法的優(yōu)勢(shì):

  1. 可以綁定多個(gè)事件饮笛,多個(gè)事件處理程序
$("div").on({
    mouseover: function(){},
    mouseout: function(){},
    click: function(){}
});

// 如果事件類型是相同的,可以使用下面這種方法
$("div").on("mouseover mouseout", function() {
    $(this).toggleClass("current");
})
  1. 可以實(shí)現(xiàn)事件委派操作论熙,事件委派的定義就是福青,把原來(lái)加給子元素身上的事件綁定在父元素身上,就是把事件委派給父元素
$('ul').on('click','li',function() {
    alert('hello world!');
});

在此之前有bind()脓诡、live()无午、delegate()等方法來(lái)處理事件綁定或者事件委派,最新版本的請(qǐng)用on替代他們

解綁事件

off()方法可以移除通過(guò)on()方法添加的事件處理程序

$("p").off(); // 解綁p標(biāo)簽所有事件處理程序
$("p").off("click"); // 解綁p標(biāo)簽元素上面的點(diǎn)擊事件
$("ul").off("click", "li"); // 解綁事件委托

如果有的事件只想觸發(fā)一次祝谚,可以用one()來(lái)綁定事件

$("p").one("click", function() {
    alert(57); // 只觸發(fā)一次
})

自動(dòng)觸發(fā)事件trigger()

  1. 元素.事件() 第一種簡(jiǎn)寫(xiě)形式宪迟,會(huì)觸發(fā)元素的默認(rèn)行為
  2. 元素.trigger("事件") 第二種自動(dòng)觸發(fā)模式,會(huì)觸發(fā)元素的默認(rèn)行為
<style>
    div{
        width: 100px;
        height: 100px;
        background-color: blue;
    }
</style>
<div></div>
<script>
    $(function() {
        $("div").on("click",function() {
            alert(5);
        });
        // 第一種 元素.事件()
        $("div").click();

        // 第二種 元素.trigger("事件")
        $("div").trigger("click");
    })
</script>

  1. 元素.triggerHandler("事件") 第三種自動(dòng)觸發(fā)模式交惯,這種方法不會(huì)觸發(fā)元素的默認(rèn)行為

jQuery事件對(duì)象

事件觸發(fā)次泽,就會(huì)有事件對(duì)象的產(chǎn)生

  • element.on(events, [selector],function(event) {})
  • 阻止默認(rèn)行為:event.preventDefault() 或者 return false
  • 阻止事件冒泡:event.stopPropagation()
<!-- 阻止事件冒泡 -->
<style>
    div{
        width: 100px;
        height: 100px;
        background-color: blue;
    }
</style>
<div></div>
<script>
    $(function() {
        $(document).on("click",function() {
            alert(7);
        });
        $("div").on("click",function() {
            alert(5);
            event.stopPropagation();
        });
    })
</script>

jQuery里面的一些常用方法

如果想要把某個(gè)對(duì)象拷貝(合并)給另外一個(gè)對(duì)象使用,此時(shí)可以用$.extend()方法

  • 語(yǔ)法:$.extend([deep], target, object1, [objectN])
    • deep:如果設(shè)為true為深拷貝席爽,默認(rèn)為false淺拷貝
    • target:要拷貝的目標(biāo)對(duì)象
    • object1:待拷貝到第一個(gè)對(duì)象的對(duì)象
$(function() {
    /* let targetObj = {};
    let obj = {
        id: 1,
        name: "andy"
    };
    $.extend(targetObj, obj);
    console.log(targetObj); */

    /* let targetObj = {
        id: 0
    };
    let obj = {
        id: 1,
        name: "andy"
    };
    $.extend(targetObj, obj);
    console.log(targetObj); // 會(huì)覆蓋targetObj里面原來(lái)的數(shù)據(jù) */

    let targetObj = {
        id: 0
    };
    let obj = {
        id: 1,
        name: "andy"
        byc: {
            age: 18
        }
    };
    $.extend(targetObj, obj);
    console.log(targetObj);
})
  • 淺拷貝是把被拷貝的對(duì)象復(fù)雜數(shù)據(jù)類型中的地址拷貝給目標(biāo)對(duì)象意荤,修改目標(biāo)對(duì)象會(huì)影響被拷貝對(duì)象
  • 深拷貝,前面加true,完全克隆(拷貝的是對(duì)象只锻,不是地址)玖像,修改目標(biāo)對(duì)象不會(huì)影響被拷貝對(duì)象

多庫(kù)共存

  • 問(wèn)題概述:jQuery使用$作為標(biāo)識(shí)符,隨著jQuery的流行齐饮,其它JS庫(kù)也會(huì)用這種$作為標(biāo)識(shí)符捐寥,這樣一起使用會(huì)引起沖突
  • 客觀需求:需要一個(gè)解決方案,讓jQuery和其他的JS庫(kù)不存在沖突祖驱,可以同時(shí)存在握恳,這就叫做多庫(kù)共存
  • jQuery解決方案
  1. 把里面的符號(hào)統(tǒng)一改為jQuery,例如:jQuery("div")
  2. 讓jQuery釋放對(duì)$控制權(quán)羹膳,讓用戶自己決定(jQuery變量規(guī)定新的名稱):$noConflict() let xx = $noConflict();

jQuery插件

jQuery功能比較有限睡互,想要更復(fù)雜的特效效果,可以借助于jQuery插件完成

  • 注意:這些插件也是基于jQuery來(lái)完成的陵像,所以必須要先引入jQuery文件,因此也稱為jQuery插件
  • 推薦兩個(gè)JS插件常用的網(wǎng)站http://www.jq22.com/http://www.htmleaf.com/
  • jQuery插件使用步驟
    • 引入相關(guān)文件(jQuery文件和插件文件)
    • 復(fù)制相關(guān)html寇壳、css醒颖、js(調(diào)用插件)

推薦案例練習(xí):瀑布流(圖片懶加載)、輪播圖(3D切換版)

  • 圖片懶加載:就是當(dāng)我們頁(yè)面滾動(dòng)到可視區(qū)域在顯示圖片(圖片使用延遲加載可提高網(wǎng)頁(yè)下載速度壳炎,它也能幫助減輕服務(wù)器負(fù)載)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泞歉,一起剝皮案震驚了整個(gè)濱河市逼侦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌腰耙,老刑警劉巖榛丢,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異挺庞,居然都是意外死亡晰赞,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)选侨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掖鱼,“玉大人,你說(shuō)我怎么就攤上這事援制∠返玻” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵晨仑,是天一觀的道長(zhǎng)褐墅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)洪己,這世上最難降的妖魔是什么妥凳? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮码泛,結(jié)果婚禮上猾封,老公的妹妹穿的比我還像新娘。我一直安慰自己噪珊,他們只是感情好晌缘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著痢站,像睡著了一般磷箕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阵难,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天岳枷,我揣著相機(jī)與錄音,去河邊找鬼呜叫。 笑死空繁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朱庆。 我是一名探鬼主播盛泡,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼娱颊!你這毒婦竟也來(lái)了傲诵?” 一聲冷哼從身側(cè)響起凯砍,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拴竹,沒(méi)想到半個(gè)月后悟衩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡栓拜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年座泳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菱属。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钳榨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纽门,到底是詐尸還是另有隱情薛耻,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布赏陵,位于F島的核電站饼齿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蝙搔。R本人自食惡果不足惜缕溉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吃型。 院中可真熱鬧证鸥,春花似錦、人聲如沸勤晚。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赐写。三九已至鸟蜡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挺邀,已是汗流浹背揉忘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留端铛,地道東北人泣矛。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像禾蚕,于是被迫代替她去往敵國(guó)和親乳蓄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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