2013-03-26 27 views
6

Với này:Tại sao event.namespace không được xác định cho sự kiện nhấp?

HTML

<button id="btn">Click me</button> 
<br/> 
<div id="result"></div> 

JS

$("#btn").on("click.mynamespace", function (e) { 
    $("#result").text("namespace: " + e.namespace); 
}); 

Tại sao namespace luôn xác định?

Chỉnh sửa:

Điều tôi muốn làm là kết nối nhiều phiên bản của trình xử lý sự kiện cho sự kiện nhấp của nút. Sau đó, khi nút được bấm, mỗi lần được gọi là lần lượt. Mỗi cá thể của trình xử lý sự kiện sau đó cần phải ngắt kết nối chính nó, để nếu nút được bấm lần nữa, thì cá thể xử lý đó không được gọi.

+0

Câu hỏi thực sự là: tại sao trình xử lý sự kiện được gọi nếu không gian tên không khớp với tên của tôi? –

Trả lời

8

Thuộc tính namespace chỉ được xác định nếu sự kiện được kích hoạt bằng cách sử dụng các phương thức .trigger hoặc .triggerHandler của jQuery. Mặt khác, jQuery sẽ biết không gian tên nào để sử dụng nếu có nhiều?

http://jsfiddle.net/GYyef/2/

http://api.jquery.com/event.namespace/

Nếu mục tiêu của bạn là để có sự kiện chỉ xảy ra một lần, phương pháp .one() sẽ thích hợp hơn.

+0

oh, tôi hy vọng rằng tất cả các trình xử lý sẽ được gọi cho sự kiện nhấp chuột và trong mỗi trình xử lý, tôi có thể truy xuất không gian tên để ngắt kết nối trình xử lý sự kiện. – slippyr4

+1

@ slippyr4 dữ liệu sự kiện được đề cập bởi karim79 sẽ là cách để làm điều đó, tuy nhiên, nếu bạn chỉ muốn sự kiện xảy ra một lần, phương pháp '.one' sẽ phù hợp hơn. –

+0

đăng câu trả lời, đó chính xác là những gì tôi muốn! – slippyr4

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