Hướng dẫn css disabled div style - css kiểu div bị vô hiệu hóa

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

https://jsfiddle.net/rpxxrjxh/

CSS Pseudo-Class

 $(this).unbind('click', false);
 $(this).unbind('contextmenu', false);
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.

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

<form action="#">
  <fieldset id="shipping">
    <legend>Shipping addresslegend>
    <input type="text" placeholder="Name" />
    <input type="text" placeholder="Address" />
    <input type="text" placeholder="Zip Code" />
  fieldset>
  <br />
  <fieldset id="billing">
    <legend>Billing addresslegend>
    <label for="billing-checkbox">Same as shipping address:label>
    <input type="checkbox" id="billing-checkbox" checked />
    <br />
    <input type="text" placeholder="Name" disabled />
    <input type="text" placeholder="Address" disabled />
    <input type="text" placeholder="Zip Code" disabled />
  fieldset>
form>

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

Sự chỉ rõ
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

Xem thêm