2

過去数時間、私はこれを行う方法を探しましたが、何も思いつきませんでした. 属性内の部分文字列のみを変更する方法を見つけようとしています。私がやりたいことの例は、変更です

<a href="media/gallery/jtnp/JT.JPG" rel="shadowbox[JTNP]" title="Joshua tree" class="shaddowimages"><img id="JTth" src="media/gallery/jtnp/b_thum/JTthumb.JPG" alt="A small Joshua tree"></a>

<a href="media/gallery/jtnp/JT.JPG" rel="shadowbox[JTNP]" title="Joshua tree" class="shaddowimages"><img id="JTth" src="media/gallery/jtnp/s_thum/JTthumb.JPG" alt="A small Joshua tree"></a>

これが私がこれまでに持っているものですが、ボタン #changethumb を押しても何も起こりません。

$(document).ready(function() {

    var count = 0;

    $('#changethumb').click(function() {

        if (count === 0) {
            $('#shaddowimages img').each(function() {
                $(this).attr('src', $(this).attr('src').replace('b_', 's_'));
            });
            count = 1;
        } else {
            $('#shaddowimages img').each(function() {
            $(this).attr('src', $(this).attr('src').replace('s_', 'b_'));    
            });
        count = 0;
        }
    })
});

各 src を手動で置き換えて置き換えることもできますが、20 以上の画像があるため、可能であればこれを自動化する方法が必要です。何か助けはありますか?

4

2 に答える 2

2

.attr( attributeName, function(index, attr) )を使用します

$('#shaddowimages img').attr('src', function (i, old) {
    return old.replace('b_', 's_');
});

または.prop( propertyName, function(index, oldPropertyValue) ) を使用することをお勧めします

$('#shaddowimages img').prop('src', function (i, old) {
    return old.replace('b_', 's_');
});

.prop() と .attr()を読む

于 2013-11-07T05:34:26.107 に答える
0

内部ですべてのロジックを実行できるattrため、内部でコードを複製する必要はありません'if

 $('#changethumb').click(function() {
    $('#shaddowimages img').attr('src', function (i, src) {
         var newSrc= count==1 ? src.replace('b_', 's_') : src.replace('s_', 'b_');
         count=  count == 1 ? 10 : 1;
          return  newSrc;
    });
 });

1または10しかないのは奇妙にcount思えます。コードをコピーしましたが、意味がありません

于 2013-11-07T05:42:51.987 に答える