2012-05-14 4 views
8

Vài phút trước đây, tôi đã trả lời câu hỏi:
What is the difference between focusin/focusout vs focus/blur in jQuery?Tại sao event.bubbles là false cho "focusin" và "focusout"?

Câu trả lời là:

Câu trả lời ngắn: focusin & thinsp; & thinsp; & thinsp; bong bóng, focus không.
              focusout bong bóng, blur & thinsp; không làm.

Tôi đã thử nghiệm nó, đó là sự thật, nhưng tôi gặp phải một điều kỳ lạ trong khi cố gắng thiết lập một DEMO:

$('#test').on('focusin focusout focus blur change', function(e) { 
    console.log(e.type + 'event bubles? : ' + e.bubbles); 
});​ 

focusinfocusout cho tôi e.bubbles == false

Có một lỗi của jQuery hoặc Tôi có thiếu hiển nhiên ở đây không?

+0

Sai/sai trong Chrome 18 (trong trường hợp bạn muốn một số ghi chú của trình duyệt ...) – jmar777

Trả lời

4

Có vẻ như một lỗi trong jQuery. Bạn có thử nghiệm điều này trên trình duyệt hỗ trợ focusinfocusout không? (Ví dụ: IE?) Bởi vì nếu không, bạn đang thử nghiệm cờ cho sự hỗ trợ mô phỏng của jQuery.

Tôi đã bỏ qua phần "Âm thanh giống như lỗi" ở trên vì jQuery không yêu cầu bình thường hóa thuộc tính bubbles trong tài liệu. Vì vậy, vì nó không đảm bảo nó, nó không phải hỗ trợ nó trên các sự kiện mô phỏng. (Lưu ý rằng nếu tôi chạy bản demo của bạn trên IE7, tôi nhận được undefined vì IE7 không hỗ trợ thuộc tính Sự kiện DOM2 bubbles.) Vẫn là một sự cố , nhưng có lẽ không phải là lỗi . :-)


Cập nhật:

đáp ứng trên the jQuery ticket:

Các tài liệu không yêu cầu để bình thường hóa các event.bubbles tài sản. Bạn có thể tìm kiếm nó trong event.originalEvent nhưng đó sẽ là nền tảng được cung cấp, không chuẩn hóa.

Vì vậy, dự đoán của tôi ở trên là chính xác. Đó không phải là lỗi , bởi vì họ không yêu cầu bình thường hóa điều đó. :-)

+1

Đã thử nghiệm với 'chrome' – gdoron

+0

WOW Tôi đã tìm thấy lỗi trong jQuery, có huy hiệu không? Tôi sẽ meta ... :) – gdoron

+0

@gdoron: Chỉ cần khoe khoang quyền. :-) –