Tôi đã thực hiện mã kiểm tra này cho câu hỏi: http://jsfiddle.net/5phqm/1/Tại sao triggerHandler của jQuery() không ngăn các sự kiện nội tuyến?
Theo như tôi hiểu, nếu jQuery triggerHandler()
ngăn chặn hành vi duyệt mặc định, sau đó có nguồn gốc sự kiện JavaScript sẽ không được kích hoạt và xử lý (và đó là sự thật cho addEventListener()
trong tôi mã), nhưng sự kiện nội tuyến, được thêm vào thông qua thuộc tính của thẻ onclick=""
sẽ được kích hoạt bất kỳ lúc nào! Tại sao nó xảy ra? Tôi có hiểu nhầm điều gì đó về các sự kiện kích hoạt trong trình duyệt không?
Đối với những gì đáng giá, tôi luôn nghĩ về điều này như sau mẫu hành vi quy tắc CSS: mã nội dòng sẽ ghi đè mã được tìm thấy trong 'đầu', điều này sẽ ghi đè mã được tìm thấy trong tập lệnh bên ngoài. Bạn có thể chỉ đơn giản là 'removeAttr ('onclick')'. –
Đây không phải là câu trả lời trực tiếp nhưng tại trang web của jQuery, họ tuyên bố họ không dành nhiều công sức cho các vấn đề với trình xử lý sự kiện nội tuyến: http://docs.jquery.com/Won't_Fix#Inline_Event_Handlers. Tôi muốn được quan tâm để biết tại sao mã của bạn cư xử như nó, nhưng tôi không nghĩ rằng sẽ có một sửa chữa cho nó (trong trường hợp bạn tìm thấy nó một lỗi). – pimvdb