2010-06-30 53 views
5

Khi tôi viếtchức năng (e) {e.something ...} e là gì?

$("#new_lang").click(function(e) 
{ 
    alert("something"); 
    e.stopPropagation(); 
}); 

e đây là gì, và tại sao không làm công việc chức năng mà không có nó? Tại sao tôi có thể viết bất cứ điều gì thay vì e?

+1

bạn có thể viết bất cứ điều gì thay vì e, chỉ cần sử dụng tên mới trong toàn bộ hàm – galambalazs

+0

@galambalazs - Thực ra bạn không thể sử dụng tham số nào cả, tôi không nói bạn * nên *, nhưng bạn * có thể * . –

+0

không nếu bạn muốn dừng stopPropagation ... bạn cần đối tượng sự kiện cho điều đó. hoặc sử dụng các đối số [0], nhưng đừng nhầm lẫn anh ta ... – galambalazs

Trả lời

9

eevent object rằng handler nhận được. Bạn không cần sử dụng "e" cụ thể dưới dạng tên biến, bạn có thể gọi nó là bất kỳ thứ gì bạn muốn (miễn là nó không phải là bất kỳ số lượng từ khóa nào!), Nhiều người gọi nó là event chẳng hạn.

, bạn có thể làm mà không có nó, vì nó là đối số đầu tiên, arguments[0] cũng làm việc, nhưng tôi sẽ không đi con đường đó. You can see this working here, nhưng một lần nữa tôi sẽ chỉ sử dụng đối số được khai báo giống như hiện tại nên nó rất rõ ràng.

+1

... hạnh phúc bây giờ? :) – galambalazs

+2

@galambalazs - về? Tôi không quan tâm nếu câu trả lời * my * của tôi được chọn làm câu trả lời ... Tôi quan tâm rằng câu trả lời ** tốt ** được chọn. Tôi không bỏ phiếu thường xuyên (kiểm tra tiểu sử của tôi), cũng không ở đây ... nhưng khi người googler tiếp theo đến tìm câu trả lời cho câu hỏi, trang web sẽ tốt hơn nếu một ** tốt, hoàn chỉnh * * một được chọn để ở trên cùng cho họ (thông qua được chấp nhận). Tôi nghĩ điều này, Jamiec và T.J. tất cả đều phù hợp với mô tả đó, và tôi sẽ rất vui nếu bất kỳ một trong số chúng được chấp nhận. –

+0

không có tranh luận về điều đó ... tôi hoàn toàn đồng ý với bạn. :) – galambalazs

3

e trong ví dụ đó là đối tượng sự kiện (link to docs) cho sự kiện nhấp chuột. Như với bất kỳ đối số hàm nào, bạn có thể sử dụng bất kỳ tên nào bạn muốn. Nếu bạn không cần phải làm bất cứ điều gì với nó (ví dụ, nếu bạn không cần phải gọi stopPropagation), bạn có thể để nó hoàn toàn.

3

Đó là đối tượng sự kiện.

http://api.jquery.com/category/events/event-object/

+3

Tại sao điều này lại được nâng lên quá nhiều? Nó chỉ trả lời 1/3 câu hỏi ... –

+2

tôi đã upvoted, bởi vì nó là câu trả lời đầu tiên. – Simon

+1

tôi cập nhật vì không cần phải mô tả dài hơn nó nằm ngoài phạm vi và đã được viết nên tại sao phải sao chép và dán –

6

e, trong ngữ cảnh này, là đối tượng sự kiện được sự kiện nhấp chuột nêu lên. Nó sẽ làm việc hoàn toàn tốt mà không có nó (mặc dù, trong ví dụ của bạn, bạn sẽ không thể stopPropagation):

$("#new_lang").click(function() 
{ 
    alert("something"); 
}); 

Bạn cũng có thể thay thế bất kỳ tên cho e, như bạn làm với bất kỳ chức năng param

$("#new_lang").click(function(eventObj) 
{ 
    alert("something"); 
    eventObj.stopPropagation(); 
}); 
0

Again từ http://api.jquery.com/bind/ như liên kết trên các câu hỏi trước: hàm callback

việc xử lý cũng thông số mất có thể. Khi hàm được gọi là , đối tượng sự kiện JavaScript sẽ được chuyển đến tham số đầu tiên.

Đối tượng sự kiện thường là không cần thiết và tham số bỏ qua, như bối cảnh đủ thường có sẵn khi xử lý là ràng buộc để biết chính xác những gì cần phải được thực hiện khi xử lý được kích hoạt. Tuy nhiên, đôi khi cần thiết để thu thập thêm thông tin về môi trường của người dùng tại thời điểm sự kiện được bắt đầu.

Có rất nhiều thông tin hữu ích trên trang đó. :)

Các vấn đề liên quan