1

数日前に、目的の画像を読み込めない場合にプレースホルダー画像にフォールバックする簡単なことを書きました。これにより、ユーザーは 2 つのプレースホルダーを使用して画像サイズを定義できます。

それは私が書いたものです

;(window.jQuery || window.Zepto).fn.fallback = function (url) {
    return this.one('error', function () {
        this.src = (url|| 'http://lorempixel.com/$w/$h')
        .replace('$w', this.width).replace('$h', this.height);
    });
};

すべて(ドル+最初の文字)を任意のオブジェクトから割り当てられた値に置き換えるため.replace('$w', this.width).replace('$h', this.height);に、より短いが等しいものに置き換えることが可能かどうか、私は今私に尋ねていますか?regex$*

このようなもの:

'$f is not equal to $b'.replace(/magicregex/, {
    foo: 'foo',
    bar: 'bar'
});

propertiesからすべてを使用できるように、image-objectたとえばimage.width、、...image.srcimage.width

4

1 に答える 1

1

代わりに関数を使用する場合のみ。お気に入り:

"$w/$h".replace(/\$[wh]/g, function(m){ return m == "$w" ? width : height; });

次のように比較を省略することもできます。

"$w/$h".replace(/\$(?:(w)|h)/g, function(m, w){ return w ? width : height; });

ハッシュの値を調べたい場合は、次を使用できます。

"$w/$h".replace(/\$(\w+)/g, function(m, name){ return hash[name]; });
于 2013-07-01T10:32:57.583 に答える