二十宠叼、jquery之——處理事件

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

click事件

給元素綁定click事件播玖,可以用如下方法:

$('#btn1').click(function(){

    // 內(nèi)部的this指的是原生對象

    // 使用jquery對象用 $(this)

})

鼠標(biāo)移入移出事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>鼠標(biāo)移入移出</title>
    <style type="text/css">
        .box{
            width: 200px;
            height: 200px;
            background-color: gold;
            margin: 100px auto 0;
        }
        .son{
            width: 100px;
            height: 100px;
            background-color: green;
        }
    </style>
    <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
    <script type="text/javascript">
        $(function(){
            /*進入子元素也觸發(fā)*/
            /*$('#div1').mouseover(function() {
                $(this).animate({marginTop: 50});//.stop()
            });
            $('#div1').mouseout(function() {
                $(this).animate({marginTop: 100});//.stop()
            });*/

            /*進入子元素不觸發(fā)*/
            /*$('#div1').mouseenter(function() {
                $(this).stop().animate({marginTop: 50});//
            });
            $('#div1').mouseleave(function() {
                $(this).stop().animate({marginTop: 100});//
            });*/

            /*通過hover(mouseenter+mouseleave)實現(xiàn)簡寫*/
            $('#div1').hover(function() {
                $(this).stop().animate({marginTop: 50});
            }, function() {
                $(this).stop().animate({marginTop: 100});
            });
        })
    </script>
</head>
<body>
    <div id="div1" class="box">
        <div class="son"></div>
    </div>
</body>
</html>

input框事件

  1. 一開始就獲取焦點椎工,相當(dāng)于設(shè)置了autofocus自動獲取焦點了。
 $('#txt01').focus();
  1. 文本框獲取焦點的時候(有光標(biāo)閃爍的時候)
$('#txt01').focus(function() {
      alert('focus');
});
  1. 失去焦點的時候(光標(biāo)離開的時候)
$('#txt01').blur(function() {
    alert('blur');
});
  1. 輸入框內(nèi)容發(fā)生變化的時候蜀踏,失去焦點后觸發(fā)维蒙,可用于注冊時驗證用戶名是否已存在.
$('#txt01').change(function() {
    alert('change');
});
  1. 松開鍵盤按鍵就觸發(fā)
$('#txt01').keyup(function() {
    alert('keyup');
});

綁定事件

$(function(){
            // //只能綁定click事件,不能綁定其他的了
            // $('#btn').click(function() {
            //  /* Act on the event */
            // });

            //bind方式可綁定多個事件
            $('#btn').bind('click mouseover', function() {
                alert('hello!');

                //取消綁定事件
                $(this).unbind('mouseover');
            });
        })

自定義事件

$(function(){
            //自定義事件只能用bind方式綁定果覆,第一個參數(shù)是事件的名字颅痊,第二個參數(shù)是事件發(fā)生時執(zhí)行的函數(shù)
            $('#btn1').bind('hello', function(){
                alert('hello');
            })
            $('#btn1').bind('click', function(){
                alert('click');
            })
            $('#btn2').click(function() {
                // trigger即可以觸發(fā)自定義事件,也可以觸發(fā)原始的事件
                $('#btn1').trigger('hello');
                $('#btn1').trigger('click');
            });
            
            //不一定點擊按鈕觸發(fā)局待,也可頁面加載時觸發(fā)斑响,也可在滿足某種if條件時觸發(fā)
            // $('#btn1').trigger('hello');
        })

其他事件

// //JS原生寫法
        // window.onload = function(){

        // }

        // //jQuery寫法,等同于上面寫法
        // $(window).load(function(){

        // })

        // //ready的寫法
        // $(document).ready(function(){

        // })

        // //ready的簡寫
        // $(function(){

        // })

        // 窗口改變尺寸的時候燎猛,會高頻觸發(fā)
        $(window).resize(function() {
            console.log('3');
        });

事件冒泡

什么是事件冒泡恋捆?
在一個對象上觸發(fā)某類事件(比如單擊onclick事件),如果此對象定義了此事件的處理程序重绷,那么此事件就會調(diào)用這個處理程序沸停,如果沒有定義此事件處理程序或者事件返回true,那么這個事件會向這個對象的父級對象傳播昭卓,從里到外愤钾,直至它被處理(父級對象所有同類事件都將被激活),或者它到達了對象層次的最頂層候醒,即document對象(有些瀏覽器是window)能颁。

事件冒泡的作用
事件冒泡允許多個操作被集中處理(把事件處理器添加到一個父級元素上,避免把事件處理器添加到多個子級元素上)倒淫,它還可以讓你在對象層的不同級別捕獲事件伙菊。

阻止事件冒泡
事件冒泡機制有時候是不需要的,需要阻止掉敌土,通過 event.stopPropagation() 來阻止

    var $box1 = $('.father');
    var $box2 = $('.son');
    var $box3 = $('.grandson');
    $box1.click(function() {
        alert('father');
    });
    $box2.click(function() {
        alert('son');
    });
    $box3.click(function(event) {
        alert('grandson');
        event.stopPropagation();

    });
    $(document).click(function(event) {
        alert('grandfather');
    });
})

......

<div class="father">
    <div class="son">
        <div class="grandson"></div>
    </div>
</div>

阻止默認(rèn)行為:阻止右鍵菜單

$(document).contextmenu(function(event) {
    event.preventDefault();
或者 :
    return false;
});

合并阻止操作

實際開發(fā)中镜硕,一般把阻止冒泡和阻止默認(rèn)行為合并起來寫,合并寫法可以用
// event.stopPropagation();
// event.preventDefault();

// 合并寫法:
return false;

事件委托

事件委托就是利用冒泡的原理返干,把事件加到父級上兴枯,通過判斷事件來源的子集,執(zhí)行相應(yīng)的操作矩欠,事件委托首先可以極大減少事件綁定次數(shù)财剖,提高性能悠夯;其次可以讓新加入的子元素也可以擁有相同的操作。

一般綁定事件的寫法

$(function(){
    $ali = $('#list li');
    $ali.click(function(event) {
        $(this).css({background:'red'});
    });
})
...
<ul id="list">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>

事件委托的寫法

$(function(){
    $list = $('#list');
    $list.delegate('li', 'click', function(event) {
        $(this).css({background:'red'});
    });
})
...
<ul id="list">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
</ul>

取消事件委托

// ev.delegateTarge 委托對象
$(ev.delegateTarge).undelegate();

// 上面的例子可使用 $list.undelegate();
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末躺坟,一起剝皮案震驚了整個濱河市沦补,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咪橙,老刑警劉巖策彤,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異匣摘,居然都是意外死亡,警方通過查閱死者的電腦和手機裹刮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門音榜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捧弃,你說我怎么就攤上這事赠叼。” “怎么了违霞?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵嘴办,是天一觀的道長。 經(jīng)常有香客問我买鸽,道長涧郊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任眼五,我火速辦了婚禮妆艘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘看幼。我一直安慰自己批旺,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布诵姜。 她就那樣靜靜地躺著汽煮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棚唆。 梳的紋絲不亂的頭發(fā)上暇赤,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機與錄音瑟俭,去河邊找鬼翎卓。 笑死,一個胖子當(dāng)著我的面吹牛摆寄,可吹牛的內(nèi)容都是我干的失暴。 我是一名探鬼主播坯门,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逗扒!你這毒婦竟也來了古戴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤矩肩,失蹤者是張志新(化名)和其女友劉穎现恼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黍檩,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡叉袍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了刽酱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喳逛。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖棵里,靈堂內(nèi)的尸體忽然破棺而出润文,到底是詐尸還是另有隱情,我是刑警寧澤殿怜,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布典蝌,位于F島的核電站,受9級特大地震影響头谜,放射性物質(zhì)發(fā)生泄漏骏掀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一乔夯、第九天 我趴在偏房一處隱蔽的房頂上張望砖织。 院中可真熱鬧,春花似錦末荐、人聲如沸侧纯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眶熬。三九已至,卻和暖如春块请,著一層夾襖步出監(jiān)牢的瞬間娜氏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工墩新, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贸弥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓海渊,卻偏偏與公主長得像绵疲,于是被迫代替她去往敵國和親哲鸳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

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

  • ??JavaScript 與 HTML 之間的交互是通過事件實現(xiàn)的。 ??事件郁岩,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,490評論 1 11
  • 總結(jié): 鼠標(biāo)事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,605評論 2 10
  • 本篇博客源地址 總結(jié): 鼠標(biāo)事件 1.click與dbclick事件ele.click()ele.click(ha...
    ZombieBrandg閱讀 674評論 0 1
  • (續(xù)jQuery基礎(chǔ)(1)) 第5章 DOM節(jié)點的復(fù)制與替換 (1)DOM拷貝clone() 克隆節(jié)點是DOM的常...
    凜0_0閱讀 1,336評論 0 8
  • 第1章 鼠標(biāo)事件 1-1 jQuery鼠標(biāo)事件之click與dbclick事件 用交互操作中婿奔,最簡單直接的操作就是...
    mo默22閱讀 1,275評論 0 6