1. 程式人生 > >Day51 前端基礎--jQuery 事件

Day51 前端基礎--jQuery 事件

一,jQuery常用事件

  1.(keyup/keydown)鍵盤事件

    批量操作

  2.hover(不是原生DOM事件,是jQuery封裝的)

    接收兩個匿名函式

    $('').hover(function() {滑鼠移上去要做的事},function() {滑鼠移下去要做的事} )

  3.input事件:

    只要input框的發生變化就會觸發此事件

  4.click點選事件

click(function(){...})  //一般用於監視點選事件
hover(function(){...})  //一般用於對使用者游標起反應
blur(function
(){...}) //一般用於捕獲使用者輸入完成的輸入內容 focus(function(){...}) //獲得焦點時觸發 change(function(){...}) //一般用於監視表單狀態 keyup(function(){...}) //一般與keydown配合實現鍵盤事件的批量操作 keydown(function(){...})
input(function(){...}) //一般用於監視輸入框的輸入內容

 

二,jQuery繫結事件的方式

//1.jQ物件.事件(事件處理函式() {動作})
$(''").click(function() {})

//2.jQ物件.on(事件,事件處理函式() {動作})
$("").on('click',function() {})

  注意:像click、keydown等DOM中定義的事件,我們都可以使用".on()"方法來繫結事件,但是"hover"這種jQuery中定義的事件就不能用".on()"方法來綁定了

  補充:移除事件

//off()移除用on()繫結的事件
格式:
    jQ物件.off(事件,事件物件函式() {動作})
    jQ物件.off(事件,[選擇器],事件物件函式() {動作})
$("").off('click',function() {...})

 

三,阻止後續事件執行

  1.return false; //常見阻止表單提交

  2.event.stopPropagation()   //event代表事件本身

//例項:阻止預設事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>阻止預設事件</title>
</head>
<body>

<form action="">
    <button id="b1">點我</button>
</form>

<script src="jquery-3.3.1.min.js"></script>
<script>
    $("#b1").click(function (e) {
        alert(123);
        //return false;
        e.preventDefault();
    });
</script>
</body>
</html>

 

三、事件冒泡

  DOM中事件的特點:

    父標籤的事件會被子標籤觸發

  補充:阻止事件冒泡

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>阻止事件冒泡</title>
</head>
<body>
<div>
    <p>
        <span>點我</span>
    </p>
</div>
<script src="jquery-3.3.1.min.js"></script>
<script>
    $("span").click(function (e) {
        alert("span");
        e.stopPropagation();
    });

    $("p").click(function () {
        alert("p");
    });
    $("div").click(function () {
        alert("div");
    })
</script>
</body>
</html>

 

四、事件委託:

  基於一個已經存在的標籤給未來的標籤繫結事件

  $('').on('click','選擇器',function() {})

  注意:

    若想使用事件委託的方式繫結非原生DOM(例如:hover)事件處理函式,可以參照如下程式碼分兩步繫結事件

$('ul').on('mouseenter','li',function() {//繫結滑鼠進入事件
    $(this).addClass('hover');
});
$('ul').on('mouseleave','li',function() {//繫結滑鼠劃出事件
    $(this).removeClass('hover');   
});

 

六、頁面載入完畢

  1.window.onload = function() {}

    1.存在的問題

      1.會等到頁面上的文件、圖片、視訊等所有資源都載入完才會觸發

      2.多次呼叫的化存在覆蓋宣告的問題

  2.jQuery幫我們封裝的

    1.$(document).ready(function() {...})

    2.優勢:

      1.只要文件載入完就會觸發

      2.不存在覆蓋宣告的問題

    3.簡寫

      $(function() {繫結事件的操作...})

七、補充

  1.動畫(瞭解即可)

  2.each遍歷工具

    1.$.each(便利的物件,function() {})

    2.$('div').each(function() {})

  3.data

    任意jQuery物件都有data方法,可以儲存任意值,用來代替全域性變數

  4.擴充套件

    1.jQuery.extend()

    2.jQuery.fn.extend()