0

私は自分のウェブサイト用のシンプルなライトボックススクリプトに取り組んでいます。これは、画像の周りにリンク(A)をラップします。リンクURLは画像のSRCである必要がありますが、少し操作されています。

画像のURLは「pb028855_copy_147x110.jpg」のようになります。 「copy」の後から「.jpg」の前まで、「147x110」を削除します。

私の現在のスクリプトは、SRCを画像からリンクにコピーするために次のようになっています。

$(function(){
    $('img.withCaption').each(function(){
        var $imgSrc = $(this).attr("src");
        $(this).wrap('<a rel="lightBox" />');
        $(this).parent().attr("href", ""+$imgSrc);
    });
});

属性の一部を使用するにはどうすればよいですか?

前もって感謝します...

4

3 に答える 3

1

数値が正確にわからない場合は、正規表現でreplace()(docs)メソッドを使用できます。

$(function(){
    $('img.withCaption').each(function(){
        var $imgSrc = this.src.replace(/_\d+x\d+\./,'.');
        $(this).wrap('<a rel="lightBox" />')
               .parent().attr("href", ""+$imgSrc);
    });
});

したがって、この:

pb028855_copy_147x110.jpg

これで終わります:

pb028855_copy.jpg
于 2011-02-09T14:32:56.790 に答える
0

これらは文字列を操作するいくつかの方法であり、正確に何が必要かによって異なります。たとえば、次のようになります。

$imgSrc = $imgSrc.replace(/thumb/, 'big');
于 2011-02-09T14:32:40.890 に答える
0

attrメソッドは単に文字列を返すだけで、他の文字列と同じように操作できます。したがって、正規表現の置換は機能します。

$(function(){
    $('img.withCaption').each(function(){
        var imgSrc = $(this).attr("src")*.replace(/_copy_\d+x\d+\.jpg$/, "_copy.jpg")*;
        $(this).wrap($('<a rel="lightBox" />').attr("href", imgSrc);
    });
});

(ラッピング部分を少し片付けました。)

于 2011-02-09T14:36:36.113 に答える