1.3. event - click, dblclick, mouseenter, mouseleave, mousedown, mouseup, hover, focus, blur, on - Học jquery cơ bản và nâng cao

 


demo : https://www.lenlop123.com/2020/09/13-event-click-dblclick-mouseenter.html

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<script src="https://code.jquery.com/jquery-3.6.1.min.js"
  integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>

<div id="div_1" style="background-color: violet;width: 50px;height: 50px;"></div>

<input id="btn_click" type="button" value="click"><br>
<input id="btn_dblclick" type="button" value="dblclick"><br>

<input id="btn_mouseenter" type="button" value="mouseenter"><br>
<input id="btn_mouseleave" type="button" value="mouseleave"><br>
<input id="btn_mousedown" type="button" value="mousedown"><br>
<input id="btn_mouseup" type="button" value="mouseup"><br>

<input id="btn_hover" type="button" value="hover"><br>
<input id="btn_focus" type="button" value="focus"><br>
<input id="btn_blur" type="button" value="blur"><br>


<script>
 
  // click - executed when the user clicks on the HTML element
  $("#btn_click").click(function () {
    console.log("click");
  });
 
  // dblclick - executed when the user double-clicks on the HTML element
  $("#btn_dblclick").dblclick(function () {
    console.log("dblclick");
  });
 
  // mouseenter -  executed when the mouse pointer enters the HTML element
  $("#btn_mouseenter").mouseenter(function () {
    console.log("mouseenter");
  });

  // mouseleave - executed when the mouse pointer leaves the HTML element
  $("#btn_mouseleave").mouseleave(function () {
    console.log("mouseleave");
  });

   // mousedown - executed, when the left, middle or right mouse button is pressed down, while the mouse is over the HTML element
   $("#btn_mousedown").mousedown(function () {
    console.log("mousedown");
  });

  // mouseup - executed, when the left, middle or right mouse button is released, while the mouse is over the HTML element
  $("#btn_mouseup").mouseup(function () {
    console.log("mouseup");
  });


  // mouseup - takes two functions and is a combination of the mouseenter() and mouseleave() methods.
  // executed when the mouse enters the HTML element, and the second function is executed when the mouse leaves the HTML element
  $("#btn_hover").hover(function () {
    console.log("hover");
  });

  // focus - executed when the form field gets focus
  $("#btn_focus").focus(function () {
    console.log("focus");
  });

  // blur -  executed when the form field loses focus
  $("#btn_blur").blur(function () {
    console.log("blur");
  });

  // on - attaches one or more event handlers for the selected elements
  $("p").on("click", function(){
    $(this).hide();
  });

  $("p").on({
    mouseenter: function(){
      $(this).css("background-color", "lightgray");
    },
    mouseleave: function(){
      $(this).css("background-color", "lightblue");
    },
    click: function(){
      $(this).css("background-color", "yellow");
    }
  });
</script>

1. Sự kiện trong jQuery là gì?

Trong jQuery, sự kiện là tập hợp những hành động xảy ra ảnh hưởng trực tiếp đến các DOM node trong tài liệu HTML. Thực chất đó cũng là các sự kiện trong javascript, chỉ có điều là thay vì sử dụng javascript thuần thì ta sẽ sử dụng jQuery để xử lý các sự kiện đó.

Các sự kiện được phân ra từng nhóm, mỗi nhóm sẽ có đặc điểm chung, và có thể sự kiện ở nhóm này không sử dụng được ở nhóm khác.

Trước khi tìm hiểu kỹ hơn về các nhóm thì hãy cùng mình xem danh sách tất cả các sự kiện trong jQuery đã nhé.

Tên sự kiệnGiải thích
bind()Bổ sung sự kiện vào đối tượng
blur()Xảy ra khi ra khỏi đối tượng DOM
change()Xảy ra khi giá trị bị thay đổi
click()Xảy ra khi click vào đối tượng
contextmenu()Xảy ra khi click chuột phải
dbcclick()Xảy ra click double chuột
delegate()Bổ sung sự kiện vào đối tượng cả trước và sau khi thêm bằng Javascript
die()Xóa bỏ sự kiện ra khỏi đối tượng
error()Xay ra khi xuất hiện lỗi trên đối tượng
focus()Xảy ra khi focus vào đốit tượng (con trỏ chuột đang xử lý tại đối tượng)
focusin()Giống focus nhưng bổ sung thêm điều kiện là sự kiện đang ở trạng thái mới vào
focusout()Giống focus nhưn bổ sung thêm điều kiện là sự kiện đang ở trạng thái dừng
hover()Xảy ra khi hover chuột vào đối tượng
keydown()Xảy ra khi bàn phím nhấn xuống
keypress()Xảy ra khi bàn phím nhấn xuống
keyup()Xảy ra khi nhả bàn phím
live()Bổ sung sự kiện vào đối tượng, từ version 1.7 sẽ thay thế bằng sự kiện on()
load()Xảy ra khi đối tượng bắt đầu load
mousedown()Xảy ra khi nhấn chuột trái xuống
mouseup()Xảy ra khi nhả chuột trái ra
mouseenter()Xảy ra khi con trỏ chuột đi vào phạm vi của đối tượng
mouseleave()Xảy ra khi con trỏ chuột đi ra ngoài phạm vi của đối tượng
mousemove()Xảy ra khi con trỏ chuột đang di chuyển bên trong đối tượng
mouseover()Xảy ra một lần duy nhất khi con trỏ chuột bắt đầu đi vào phạm vi đối tượng
mouseout()Xảy ra một lần duy nhất khi con trỏ chuột đi ra ngoài phạm vi đối tượng
ready()Xảy ra khi browser đã load xong
resize()Xảy ra khi resize browser
scroll()Xảy ra khi kéo thanh cuộn
submit()Xảy ra khi form được submit
toggle()Xảy ra khi click vào đối tượng

2. Cách thêm sự kiện trong jQuery

Để gắn một hành động vào một sự kiện nào đó thì ta sử dụng cú pháp như sau:

1
2
3
4
$('selector').[event_name](function()
{
    // Hành động
});

Trong đó selector chính là bộ lọc trỏ đến thẻ html cần gắn sự kiện, event_name chính là tên của sự kiện.

Ví dụ: Gắn một hành động khi click vào button có id là btn.

1
2
3
$('#btn').click(function(){
    // Hành động
});

Bạn cũng có thể dùng hàm on() để gắn sự kiện cho một thẻ HTML bất kì.

1
2
3
$( "selector" ).on( "event_name", function() {
  // Hành động
});

Mình sẽ viết lại ví dụ trên như sau:

1
2
3
$( "html #btn" ).on( "click", function() {
  // Hành động
});

3. Cách hủy bỏ sự kiện trong jQuery

Khi bạn đã gắn sự kiện rồi thì hoàn toàn có thể hủy bỏ chúng bằng cách sử dụng hàm off().

Cú pháp như sau:

1
$("body").off( "[event_name]", "selector", action)

Trong đó:

  • event_name là tên của sự kiện.
  • selector là đối tượng cần bỏ sự kiện.
  • action là hành động mà bạn đã gắn vào sự kiện, nó sẽ là một function.

Như vậy, để hủy bỏ một hành động thì ta phải gom hành động đó vào một hàm, bởi việc xóa hành động của sự kiện sẽ thông qua tên hàm mà ta đã gắn.

Ví dụ: Gắn sự kiện click vào button có id="result".

1
2
3
4
5
function showResult(){
    // code
}
 
$('#result').click(showResult);

Khi click vào button #result thì sẽ chạy hàm showResult. Bây giờ nếu muốn hủy bỏ hành động này thì ta sẽ viết như sau:

1
$('#result').off("click", "#result", showResult);

4. Mouse Event trong Javascript

Mouse event là những sự kiện liên quan đến chuột máy tính. Chúng ta có năm hành động chủ yếu là clickdblclickmouseentermouseleave và hover.

Hàm click()

Sự kiện click xảy ra khi chúng ta dùng chuột click vào phạm vi hiển thị của phần tử HTML.

Hàm click() dùng để gắn sự kiện click, nó có một tham số truyền vào, đó chính là một hàm chứa những hành động sẽ được thực thi khi sự kiện click xảy ra. Ví dụ dưới đây sẽ ẩn thẻ p khi click chuột vào chúng.

1
2
3
4
5
$(document).ready(function(){
    $("p").click(function(){
        $(this).slideUp();
    });
});

Hàm dblclick()

Hàm dblclick() dùng để gắn hành động vào sự kiện click đúp chuột. Nó có một tham số truyền vào, đó chính là hàm sẽ được gọi khi sự kiện đúp chuột xảy ra. Ví dụ dưới đây sẽ ẩn thẻ p khi bạn click đúp chuột vào chúng.

1
2
3
4
5
$(document).ready(function(){
    $("p").dblclick(function(){
        $(this).slideUp();
    });
});

Hàm hover()

Hàm hover() dùng để gắn hành động vào sự kiện hover chuột, nó có hai tham số truyền vào:

  • Tham số đầu tiên là một hàm, sẽ được gọi khi hover chuột vào.
  • Tham số thứ hai là một hàm, sẽ được gọi khi hover chuột ra ngoài. Bạn có thể không cần truyền tham số này.

Ví dụ dưới đây sẽ đổi background sang màu vàng khi hover chuột vào, và trở lại backbround cũ khi đưa chuột ra ngoài.

1
2
3
4
5
6
7
$(document).ready(function(){
    $("p").hover(function(){
        $(this).addClass("highlight");
    }, function(){
        $(this).removeClass("highlight");
    });
});

Hàm mouseenter()

Hàm mouseenter() dùng để gắn hành động khi hover chuột vào, nó có một tham số truyền vào, đó chính là hàm sẽ được gọi khi xảy ra sự kiện di chuyển chuột vào các thẻ html.

1
2
3
4
5
$(document).ready(function(){
    $("p").mouseenter(function(){
        $(this).addClass("highlight");
    });
});

Hàm mouseleave()

Hàm mouseleave() dùng để gắn hành động khi đưa chuột ra ngoài, nó có một tham số truyền vào, đó chính là hàm sẽ được gọi khi di chuyển chuột ra ngoài thẻ html. Có thể thấy hàm hover() chính là sự kết hợp giữa hai hàm mouseenter() và mouseleave().

Ví dụ dưới đây là mình viết lại bằng cách sử dụng hai hàm mouseenter() và mouseleave() thay thế cho hover().

1
2
3
4
5
6
7
8
$(document).ready(function () {
    $("p").mouseenter(function () {
        $(this).addClass("highlight");
    });
    $("p").mouseleave(function () {
        $(this).removeClass("highlight");
    });
});

5. Keyboard Events trong jQuery

Keyboard Events là tập hợp những sự kiện liên quan đến bàn phím, thường là những hành động gõ phím, nhả phím như: keypress()keydown() và keyup().

Hàm keypress()

Hàm keypress() dùng để gắn hành động cho sự kiện gõ phím xuống, nó có một tham số truyền vào, đó chính là hàm sẽ được gọi khi bạn gõ một phím bất kì. Ví dụ dưới đây sẽ hiển thị một thông báo, kèm theo đó là số lần bạn đã nhấn phim trong ô input.

1
2
3
4
5
6
7
$(document).ready(function(){
    var i = 0;
    $('input[type="text"]').keypress(function(){
        $("span").text(i += 1);
        $("p").show().fadeOut();
    });
});

Hàm keydown()

Hàm keydown() dùng để gắn hành động cho sự kiện gõ phím, nó có một tham số truyền vào, đó chính là hàm sẽ được gọi khi bạn gõ phím. Tương tự, ví dụ dưới đây sẽ hiển thị thông báo và số lần mà bạn đã nhấn phím.

1
2
3
4
5
6
7
$(document).ready(function(){
    var i = 0;
    $('input[type="text"]').keydown(function(){
        $("span").text(i += 1);
        $("p").show().fadeOut();
    });
});


Hàm keyup()

Khác với hai hàm trên, hàm keyup() dùng để gắn hành động cho sự kiện nhả phím. Nó có một tham số truyền vào, đó chính là hàm sẽ được gọi khi bạn nhả phím ra. Ví dụ dưới đây sẽ hiển thị thông báo và số lần mà bạn đã nhả phím.

1
2
3
4
5
6
7
$(document).ready(function(){
    var i = 0;
    $('input[type="text"]').keyup(function(){
        $("span").text(i += 1);
        $("p").show().fadeOut();
    });
});


6. Form Events trong javascript

Form events là những sự kiện liên quan đến form, nó chỉ tồn tại trong các thẻ nhập dữ liệu như input, textarea, select.. Dưới đây là một số hàm thường dùng để bắt các sự kiện liên quan đến form trong jQuery.

Hàm change()

Hàm change() dùng để gắn hành động cho sự kiện thay đổi giá trị trên các thẻ selecttextareainput.. Nó có một tham số truyền vào, đó chính là hàm sẽ được gọi khi giá trị của các thẻ đó bị thay đổi. Ví dụ dưới đây sẽ hiển thị một thông báo khi bạn chọn thành phố trong select box.

1
2
3
4
5
6
$(document).ready(function(){
    $("select").change(function(){
        var selectedOption = $(this).find(":selected").val();
        alert("You have selected - " + selectedOption);
    });
});


Lưu ý: Đối với select box, input radio, input checkbox thì sự kiện change xảy ra khi bạn sử dụng chuột để chọn các tùy chọn. Còn đối với textbox, textarea thì xảy ra khi bạn nhập dữ liệu.

Hàm focus()

Hàm focus() dùng để gán hành động cho sự kiện con trỏ chuột focus vào các phần tử HTML như: Các ô input, textarea, select, checkbox, radio, thẻ a, và những thẻ cho phép con trỏ chuột tác động vào. Ví dụ dưới đây sẽ hiển thị thông báo khi bạn focus vào hai ô textbox.

1
2
3
4
5
$(document).ready(function(){
    $("input").focus(function(){
        $(this).next("span").show().fadeOut("slow");
    });
});


Hàm blur()

Ngược lại hàm focus(), hàm blur() dùng để gán hành động cho sự kiện con trỏ chuột rời khỏi phần tử HTML. Nó cũng có một tham số truyền vào, đó chính là hàm sẽ được gọi khi con trỏ chuột rời khỏi vị trí của thẻ HTML đó. Ví dụ dưới đây sẽ hiển thị thông báo khi xảy ra sự kiện blur.

1
2
3
4
5
$(document).ready(function(){
    $("input").blur(function(){
        $(this).next("span").show().fadeOut("slow");
    });
});


Hàm submit()

Submit() là hàm được sử dụng rất nhiều khi làm việc với form. Nó cho phép bạn gán hành động khi xảy ra sự kiện submit, tức là khi bạn enter hoặc click chuột vào input submit.

1
2
3
4
5
$(document).ready(function(){
    $("form").submit(function(event){
        // Hành động
    });
});

7. Document/Window Events trong jQuery

Đây là những sự kiện liên quan đến DOM, các đối tượng window và document.

Hàm ready()

Hàm ready() dùng để gán hành động khi toàn bộ tài nguyên trên trang web đã được load xong. Hàm này chúng ta đã sử dụng rất nhiều ở các ví dụ trên.

1
2
3
$(document).ready(function(){
    $("p").text("The DOM is now loaded and can be manipulated.");
});

Hàm resize()

Đây là một hàm thuộc đối tượng window, dùng để gắn sự kiện khi người dùng resize kích thước của trình duyệt. Ví dụ dưới đây sẽ hiển thị kích thước chiều rộng và chiều cao của trình duyệt khi người dùng thay đổi kích thước

1
2
3
4
5
6
7
$(document).ready(function(){
    $(window).resize(function() {
        $(window).bind("resize", function(){
            $("p").text("Window width: " + $(window).width() + ", " + "Window height: " + $(window).height());
        });
    });
});


Hàm scroll()

Giống với hàm resize(), hàm scroll dùng gắn hành động cho sự kiện cuộn trang web (scroll). Nó có thể áp dụng cho iframe, hoặc các thẻ HTML có thuộc tính overflow scroll.

1
2
3
4
5
$(document).ready(function(){
    $(window).scroll(function() {
        $("p").show().fadeOut("slow");
    });
});













Nhận xét