2012-05-22 31 views
28

tôi tình cờ này trong một số mã JS Tôi đã làm việc trên:Trong JavaScript, event.isTrigger là gì?

if (typeof(e.isTrigger) == 'undefined') { 
// do some stuff    
} 

Điều này dường như là một phần của jQuery. Theo tôi có thể thấy nó cho bạn biết nếu một sự kiện có nguồn gốc với người dùng hoặc tự động.

Điều này có đúng không? Và cho rằng nó không được ghi lại, có cách nào để tìm ra những thứ như vậy mà không cần phải đi sau bức màn của API jQuery?

+6

Đó là khá xấu xí. 'if (! e.isTrigger)' là cách viết. Nếu jQuery bắt đầu đặt nó thành 'false' một cách rõ ràng, mã này sẽ phá vỡ theo một cách khá lộn xộn. – meagar

+6

Vì 'e.isTrigger' không được ghi lại, nó không được hứa hẹn sẽ được giữ trong các bản phát hành trong tương lai và không nên được sử dụng trong mã sản xuất của bạn. – rhgb

Trả lời

30

Trong dòng jQuery 1.7.2 (chưa được xác định) 3148 chứa event.isTrigger = true; được lồng trong hàm kích hoạt. Vì vậy, có, bạn là chính xác - điều này chỉ được gắn cờ khi bạn sử dụng .trigger() và được sử dụng nội bộ để xác định cách xử lý sự kiện.

3

Nếu bạn xem dự án jQuery github, bên trong dòng tệp trigger.js 49 (link here), bạn có thể tìm cách tính toán isTrigger.

enter image description here

Nếu bạn thêm một kích hoạt trong JavaScript và debug qua, Bạn có thể xem như thế nào breakpoint đạt codeline này (kiểm tra trong jQuery-2.1.3.js cho this SO question)