1. ホーム
  2. jquery

[解決済み】jQueryでインラインスタイルを削除することは可能ですか?

2022-04-03 06:13:08

質問

jQueryプラグインが、インラインスタイル( display:block ). 私は手抜きを感じていて、それを display:none .

一番いい(手抜きの)方法は何ですか?

どのように解決するのですか?

更新してください。 以下の解決策はうまくいきますが、もっと簡単な方法があります。以下を参照してください。


これが、あなたや他の誰かにとって便利であることを願っています。

$('#element').attr('style', function(i, style)
{
    return style && style.replace(/display[^;]+;?/g, '');
});

これでそのインラインスタイルが削除されます。

これはあなたが望んでいたことではないのでは?あなたはそれを上書きしたかったのでしょうが、すでに指摘されているように、それは簡単にできることです。 $('#element').css('display', 'inline') .

私が探していたのは、インラインスタイルを完全に削除するソリューションでした。 私が書いているプラグインで、一時的にインライン CSS 値を設定する必要があり、後でそれを削除したい場合、スタイルシートに制御を取り戻させたい場合に必要です。 元の値をすべて保存して、それをインラインに戻すこともできますが、このソリューションの方がずっとすっきりしていると思います。


プラグイン形式ではこんな感じです。

(function($)
{
    $.fn.removeStyle = function(style)
    {
        var search = new RegExp(style + '[^;]+;?', 'g');

        return this.each(function()
        {
            $(this).attr('style', function(i, style)
            {
                return style && style.replace(search, '');
            });
        });
    };
}(jQuery));

このプラグインをスクリプトの前のページに組み込めば

$('#element').removeStyle('display');

で、これでうまくいくはずです。


更新情報 : 今になって、すべてが無駄であることに気づきました。 単に空白に設定すればいいのです。

$('#element').css('display', '');

をクリックすると、自動的に削除されます。

以下は、引用です。 ドキュメント :

スタイル プロパティの値を空文字列に設定する - 例. $('#mydiv').css('color', '') - は、そのプロパティが HTML の style 属性、jQuery の .css() メソッド、またはスタイル プロパティの直接的な DOM 操作によって行われます。ただし、スタイルシートの CSS ルールまたは <style> 要素を使用します。

ここでは、jQueryが魔法をかけているわけではないと思います。 となっているようです。 style オブジェクトはこれをネイティブに行います。 .