Chỉnh sửa: bên dưới tôi đã sử dụng phương thức .on[]
, thay vào đó sử dụng phương thức
$[this].unbind['click', false];
$[this].unbind['contextmenu', false];
0$[this].bind['click', false];
$[this].bind['contextmenu', false];
Để xóa cài đặt của bạn, bạn có thể sử dụng phương thức
$[this].unbind['click', false];
$[this].unbind['contextmenu', false];
1. Trong khi phương pháp $[this].unbind['click', false];
$[this].unbind['contextmenu', false];
2 không hoạt động như mong đợi. $[this].unbind['click', false];
$[this].unbind['contextmenu', false];
Sau khi nghiên cứu hàng trăm giải pháp! Tìm hiểu về sự kiện con trỏ, dưới đây là những gì tôi đã làm.
Như @kokodoko đã đề cập trong giải pháp của mình, điều này phù hợp với tất cả các trình duyệt ngoại trừ IE.
$[this].unbind['click', false];
$[this].unbind['contextmenu', false];
3 làm việc trong IE11 và không ở các phiên bản thấp hơn. Tôi cũng nhận thấy trong IE11, các sự kiện con trỏ không hoạt động trên các yếu tố trẻ em. Và do đó nếu chúng ta có một cái gì đó như dưới đây@Kokodoko mentioned in his solution which is apt for all browsers except IE.
$[this].unbind['click', false];
$[this].unbind['contextmenu', false];
3 work in IE11 and not in the lower versions. I also noticed in IE11, pointer-events do not work on the child elements. And hence if we have something like below My Blog
Trường hợp có phần tử con, việc thiết lập
$[this].unbind['click', false];
$[this].unbind['contextmenu', false];
4 sẽ hoạt độngĐể khắc phục vấn đề này, tôi đã viết một chức năng có thể đóng vai trò là sự kiện con trỏ cho IE và sẽ hoạt động ở các phiên bản thấp hơn.
Trong tệp JS
DisablePointerEvents[".DisablePointerEvents"];
function DisablePointerEvents[classId] {
$[classId].each[function [] {
$[this].on['click', false ];
$[this].on['contextmenu', false ];
}];
}
Trong tập tin CSS
.DisablePointerEvents{
pointer-events: none;
opacity: 0.7;
cursor: default;
}
Trong HTML
My Blog
Điều này giả mạo kịch bản
$[this].unbind['click', false];
$[this].unbind['contextmenu', false];
3 trong đó $[this].unbind['click', false];
$[this].unbind['contextmenu', false];
3 không hoạt động và khi điều kiện trên của các yếu tố con cái xảy ra.JS fiddle cho cùng một
//jsfiddle.net/rpxxrjxh/
CSS Pseudo-Class
7 đại diện cho bất kỳ phần tử bị vô hiệu hóa nào. Một phần tử bị vô hiệu hóa nếu nó không thể được kích hoạt [được chọn, nhấp vào, nhập vào, v.v.] hoặc chấp nhận tiêu điểm. Phần tử cũng có trạng thái kích hoạt, trong đó nó có thể được kích hoạt hoặc chấp nhận tiêu điểm. $[this].unbind['click', false];
$[this].unbind['contextmenu', false];
7 CSS pseudo-class represents any disabled element. An element is disabled if it can't be activated [selected, clicked on, typed into, etc.] or accept focus. The element also has an enabled state, in which it can be activated or accept focus. $[this].unbind['click', false];
$[this].unbind['contextmenu', false];
Thử nó
Cú pháp
Ví dụ
Ví dụ này cho thấy một hình thức vận chuyển cơ bản. Nó sử dụng sự kiện JavaScript
$[this].unbind['click', false];
$[this].unbind['contextmenu', false];
8 để cho phép người dùng bật/tắt các trường thanh toán.HTML
Shipping address
Billing address
Same as shipping address:
CSS
input[type="text"]:disabled {
background: #ccc;
}
JavaScript
// Wait for the page to finish loading
document.addEventListener[
"DOMContentLoaded",
[] => {
// Attach `change` event listener to checkbox
document.getElementById["billing-checkbox"].onchange = toggleBilling;
},
false
];
function toggleBilling[] {
// Select the billing text fields
const billingItems = document.querySelectorAll['#billing input[type="text"]'];
// Toggle the billing text fields
billingItems.forEach[[item] => {
item.disabled = !item.disabled;
}];
}
Kết quả
Thông số kỹ thuật
HTML Standard # Selector-Disables # selector-disabled |
Bộ chọn cấp độ 4 # enableDisables # enableddisabled |
Tính tương thích của trình duyệt web
Bảng BCD chỉ tải trong trình duyệt