Я пробував все, але не працював над Firefox (використовуючи 1.4.2 js):
Примітка. Я не можу скасувати реєстрацію функції click для тега прив'язки, оскільки вона зареєстрована динамічно. І я повинен показати посилання в відключеному режимі.
11 відповідей
Ви не можете відключити посилання (стерпним способом). Ви можете використовувати один з цих методів (кожен з яких має свої переваги і недоліки).
Це повинно бути правильним способом (але див. Нижче), щоб зробити це, коли більшість браузерів будуть його підтримувати:
Інший варіант для IE 11+ - встановити display елементів посилання на block або inline-block:
Нам, ймовірно, потрібно визначити клас CSS для pointer-events: none. але що, якщо ми повторно використовуємо атрибут disabled замість класу CSS? Строго кажучи disabled не підтримує для . але браузери не будуть скаржитися на атрибути unknown. Використовуючи атрибут disabled. IE ігнорує pointer-events. але він буде дотримуватися специфічний для IE атрибут disabled; Інші браузери, сумісні з CSS, будуть ігнорувати атрибут unknown disabled і честь pointer-events. Легше писати, ніж пояснювати:
Все це, будь ласка, зверніть увагу, що pointer-events відключає тільки. події покажчика. Посилання як і раніше будуть доступні через клавіатуру. тоді вам також буде потрібно застосувати один з інших методів, описаних тут.
У поєднанні з описаним вище методом CSS ви можете використовувати tabindex нестандартним способом, щоб запобігти фокусування елемента:
Щоб відключити посилання, виконайте наступні дії:
Щоб знову включити їх:
Якщо ви хочете замість .is ( "[disabled]"). ви можете використовувати .attr ( "disabled")! = undefined (jQuery 1.6+ завжди буде повертати undefined. коли атрибут не буде встановлено), але is () набагато зрозуміліше (спасибі Дейву Стюарту за цей відгук). Зверніть увагу, що тут я використовую атрибут disabled нестандартним способом, якщо вам це цікаво, замініть атрибут класом і замініть .is ( "[disabled]") на .hasClass ( "disabled") (додавання і видалення за допомогою addClass () і) .
Зверніть увагу, що якщо href не очищається, користувач може вручну відвідати цю сторінку.
Очистіть атрибут href. За допомогою цього коду ви не додаєте обробник подій, але ви самі змінюєте посилання. Використовуйте цей код для відключення посилань:
І цей, щоб знову включити їх:
Щоб знову включити їх:
Я не думаю, що є причина віддати перевагу це рішення замість першого.
Стілірованіе ще простіше, незалежно від того, яке рішення ви використовуєте для відключення посилання, яку ми додали, додавши атрибут disabled. щоб ви могли використовувати наступне правило CSS:
Якщо ви використовуєте клас замість атрибута:
Не забудьте також включити атрибут aria-disabled = "true" разом з атрибутом disabled.
Є ще один можливий спосіб, і той, який мені найбільше подобається. В основному це те ж саме, що і лайтбокс відключає цілу сторінку, поміщаючи div і возитися з z-index. Ось відповідні фрагменти з мого проекту. Це працює у всіх браузерах.
Таким чином, resizer знаходить місця розташування прив'язки (зображення тільки стрілки) і поміщає дезабелятор зверху. Образ disabler є напівпрозорий сірий квадрат (змініть ширину / висоту дезабертов в html, щоб відповідати вашому посиланню), щоб показати, що він відключений. Плаваюче дозволяє динамічно змінювати розмір сторінки, а дезадаптери послідують цьому прикладу в windowResizer (). Ви можете знайти відповідні зображення через Google. Для простоти я розмістив відповідний css inline.
тоді на підставі деякого умови