Удаление или замена таблицы стилей(a<ссылка>) с помощью JavaScript/jQuery



jquery set css (5)

Чтобы отключить выбранную таблицу стилей:

$('link[title="mystyle"]').prop('disabled', true);

Если вы никогда не хотите, чтобы эта .remove() стилей снова была применена, вы можете .remove() ее .remove() . Но не делайте этого, если хотите снова включить его позже.

Чтобы снова включить таблицу стилей, сделайте это (пока вы не remove элемент таблицы стилей):

$('link[title="mystyle"]').prop('disabled', false);

В приведенном выше коде важно использовать .prop , а не .attr . Если вы используете .attr , код будет работать в некоторых браузерах, но не в Firefox. Это связано с тем, что, согласно MDN , disabled является свойством HTMLLinkElement DOM HTMLLinkElement , но не является атрибутом элемента HTML link . Использование disabled как атрибута HTML нестандартно.

Как я могу это сделать?

Я пытался

$('link[title="mystyle"]').remove();

и хотя элемент удален, стили все еще применяются к текущей странице (как в Opera, так и в Firefox).

Есть ли другой путь?


Чтобы удалить таблицу стилей:

$('link[src="<path>"]').remove();

Чтобы заменить таблицу стилей:

$('link[src="<path>"]').attr('src','<NEW_FILE_PATH>');

Мне удалось это сделать:

$('link[title="mystyle"]').attr('disabled', 'disabled');

кажется, это единственный способ удалить стили из памяти. затем я добавил:

$('link[title="mystyle"]').remove();

для удаления элемента тоже.


Использование чистого javascript:

var stylesheet = document.getElementById('stylesheetID');
stylesheet.parentNode.removeChild(stylesheet);

нет jQuery-решения

если вы можете добавить id в свой тег ссылки

<link rel="stylesheet" href="css/animations.css" id="styles-animations">

document.getElementById("styles-animations").disabled = true;

если вы знаете индексную позицию вашего файла css в документе

document.styleSheets[0].disabled = true; // first
document.styleSheets[document.styleSheets.length - 1].disabled = true; // last

если вы хотите отключить стиль по имени, вы можете использовать эту функцию

/**
 * @param [string]  [styleName] [filename with suffix e.g. "style.css"]
 * @param [boolean] [disabled]  [true disables style]
 */
var disableStyle = function(styleName, disabled) {
    var styles = document.styleSheets;
    var href = "";
    for (var i = 0; i < styles.length; i++) {
        href = styles[i].href.split("/");
        href = href[href.length - 1];

        if (href === styleName) {
            styles[i].disabled = disabled;
            break;
        }
    }
};

note: убедитесь, что имя файла стиля уникально, поэтому у вас нет «dir1 / style.css» и «dir2 / style.css». В этом случае он отключит только первый стиль.





css