0

私はslimbox2を使用しており、ユーザーが画像の高解像度バージョンを保存できるようにしたいと考えています。これを .js ファイルに追加すると、まったく同じ画像をタイトルにリンクを付けて保存できます。

    // AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED) 
    jQuery(function($) {
    $("a[rel^='lightbox']").slimbox({/* Put custom options here */}, function(el) {
    return [el.href, el.title + '<br /><a href="' + el.href + '">
    Download this image</a>'];
    }, function(el) {
            return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
    });
    });

ただし、名前に「lg」を追加するだけで、ユーザーが高解像度バージョンを保存できるようにしたいと考えています。

たとえば、表示されている「image1.jpg」をダウンロードする代わりに、「image1lg.jpg」をダウンロードします。

上記のコードは el.href を使用して画像をリンクにロードしますが、+ 'lg' を使用すると、.jpg の後ろにそれが追加されるため、「image1.jpglg」が取得されますが、これは機能しません。

el.href をグレイブして、名前から「.jpg」だけを削除し、「lg.jpg」をファイル名に追加する方法はありますか?

それが理にかなっていることを願っています、時間をありがとう。

4

3 に答える 3

0

lgが拡張子の前のファイル名の最後の部分である場合は、これを試してください。

return [el.href, el.title + '<br /><a href="' + el.href.replace(/\.jpg$/i, 'lg.jpg') + '">Download this image</a>'];
于 2013-11-14T16:20:30.020 に答える
0

この回答は、最終的な回答ではありませんが、特定の質問を解決します。

ファイル名に複数のピリオドがある場合、このスクリプトは基本的に失敗します

はい、JavaScriptsplit()関数があります:

// The file
var string = 'filename.jpg'

// Split on periods
var parts = string.split('.');

// parts[0] = filename
// parts[1] = jpg

// Bring the string back together and add an 'lg' where needed
var new_string = parts[0]+'lg.'+parts[1];
于 2013-11-14T16:19:20.420 に答える
0

JavaScriptの置換機能を使用します。文字列または正規表現に一致させて、必要なものに置き換えることができます。この場合は、「.jpg」に一致させて「lg.jpg」に置き換えます。

jQuery(function($) {
    $("a[rel^='lightbox']").slimbox({/* Put custom options here */}, function(el) {
        return [el.href, el.title + '<br /><a href="' + el.href.replace('.jpg', 'lg.jpg') + '"> Download this image</a>'];
    }, function(el) {
        return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
    });
});
于 2013-11-14T16:27:03.697 に答える