ホームページ  >  記事  >  ウェブフロントエンド  >  タグの制限なしで要素スタイルを複製する方法

タグの制限なしで要素スタイルを複製する方法

DDD
DDDオリジナル
2024-10-22 12:40:02845ブラウズ

How to Clone Element Styles Without Tag Restrictions

擬似複製のための要素スタイルの複製

問題:

次のような jQuery プラグインが必要です。要素タグを制限せずに要素スタイルのクローン作成をエミュレートします。たとえば、既存のスパンの外観を複製するフォーム入力を作成したい場合があります。

解決策:

この目的に適したプラグインは getStyleObject です。このプラグインは、インライン スタイルを通じて明示的に設定されていないものも含め、指定された要素のすべての計算された CSS スタイルを取得します。

実装:

<code class="javascript">/*
 * getStyleObject Plugin for jQuery JavaScript Library
 * From: http://upshots.org/?p=112
 *
 * Copyright: Unknown, see source link
 * Plugin version by Dakota Schneider (http://hackthetruth.org)
 */

(function($){
    $.fn.getStyleObject = function(){
        var dom = this.get(0);
        var style;
        var returns = {};
        if(window.getComputedStyle){
            var camelize = function(a,b){
                return b.toUpperCase();
            }
            style = window.getComputedStyle(dom, null);
            for(var i=0;i<style.length;i++){
                var prop = style[i];
                var camel = prop.replace(/\-([a-z])/g, camelize);
                var val = style.getPropertyValue(prop);
                returns[camel] = val;
            }
            return returns;
        }
        if(dom.currentStyle){
            style = dom.currentStyle;
            for(var prop in style){
                returns[prop] = style[prop];
            }
            return returns;
        }
        return this.css();
    }
})(jQuery);</code>

使用法:

ある要素から別の要素にスタイルを適用するには、次の構文を使用します:

<code class="javascript">// original element
var original = $("#original");

// cloned element without styling yet
var cloned = original.clone().appendTo(original.parent());

// get styles from original element
var style = original.getStyleObject();

// apply styles to cloned element
cloned.css(style);</code>

以上がタグの制限なしで要素スタイルを複製する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。