Có rất nhiều câu trả lời, mỗi câu đề cập đến một vài điểm - hy vọng điều này có thể cung cấp cho bạn câu trả lời của bạn, với lời giải thích tốt về cái gì và cách sử dụng nó.
Sử dụng click()
là một bí danh cho bind('click' ...)
. Việc sử dụng bind()
sẽ đưa DOM giống như khi trình xử lý sự kiện đang được thiết lập và liên kết hàm với từng phần tử phù hợp trong DOM. Điều đó có nghĩa là nếu bạn sử dụng, $('a').click(...)
bạn sẽ liên kết hàm được cung cấp cho sự kiện nhấp chuột của mọi thẻ liên kết trong DOM được tìm thấy khi mã đó chạy.
Sử dụng live()
là cách cũ trong jQuery; nó được sử dụng để liên kết các sự kiện giống như bind()
hiện tại, nhưng nó không chỉ ràng buộc chúng với các phần tử trong DOM khi mã chạy - nó còn lắng nghe các thay đổi trong DOM và cũng sẽ liên kết các sự kiện với bất kỳ phần tử nào được so khớp trong tương lai. Điều này hữu ích nếu bạn đang thao tác DOM và bạn cần một sự kiện tồn tại trên một số phần tử có thể bị xóa / cập nhật / thêm vào DOM sau này nhưng không tồn tại khi DOM được tải lần đầu tiên.
Lý do mà live()
bây giờ bị mất giá là do nó được thực hiện kém. Để sử dụng live()
, ban đầu bạn phải có thể chọn ít nhất một phần tử trong DOM (tôi tin là vậy). Nó cũng khiến một bản sao của hàm chạy bị ràng buộc với từng phần tử - và nếu bạn có 1000 phần tử, đó là rất nhiều hàm được sao chép.
Việc tạo ra on()
hàm là để khắc phục những vấn đề đó. Nó cho phép bạn liên kết một trình xử lý sự kiện duy nhất với một đối tượng sẽ không thay đổi trong DOM (vì vậy bạn không thể sử dụng on()
trên một phần tử sẽ bị xóa / thêm vào DOM sau này - hãy liên kết nó với một đối tượng mẹ) và chỉ cần áp dụng một phần tử "bộ lọc" để chức năng chỉ chạy khi nó được kết hợp với phần tử phù hợp với bộ chọn. Điều này có nghĩa là bạn chỉ có một hàm tồn tại (không phải một loạt các bản sao) bị ràng buộc với một phần tử duy nhất - một cách tiếp cận tốt hơn nhiều để thêm các sự kiện "trực tiếp" trong DOM.
... và đó là những khác biệt, và tại sao mỗi chức năng tồn tại và tại sao lại live()
bị khấu hao.
on
đếnclick
vìclick
như một âm thanh tên hàm giống như một động từ, một hành động, khi những gì nó làm là không để nhấp vào yếu tố (như bạn cũng có thể làm với cùngclick
chức năng)