-2

複数の値を返す関数でifステートメントを作成する必要があります。これを試しましたが、機能しません。

a(this).attr('src', function(i, current){
    if ( i == 'http://www.old.com'){
        return current.replace('http://www.old.com','http://www.new.com');
    }
    else if ( i == 'http://www.older.com'){
        return current.replace('http://www.older.com','http://www.new.com');
    }
    else ();
});
4

2 に答える 2

3

jQueryのコールバックベースの.attr関数の形式は次のとおりです。

.attr( attributeName, function(index, attr) )

ステートメントifは最初のコールバック引数を使用しますi。これは常にインデックス番号になりますが、文字列であることが期待されているようです。ただし、各属性の文字列値は2番目のコールバック引数にあります。あなたはおそらく2番目の引数を比較するつもりcurrentでした。

さらに(あなたが行ったコメントに基づいて)、実際には完全に一致する必要はありませんold.com。URLが次で始まるかどうかを確認する必要がありますhttp://www.old.com

if ( current.indexOf('http://www.old.com') == 0) { ...
于 2013-01-07T17:01:09.133 に答える
1

あなたはiをテストしていて、現在の状態で置き換えています。currentとiが同一でない限り、間違った状態になり、置き換えられない可能性があります。また、else()は正しくなく、不要です。

a(this).attr('src', function(index, current){
    if ( current == 'http://www.old.com'){
        return 'http://www.new.com';
    }
    else if ( current == 'http://www.older.com'){
        return 'http://www.new.com';
    }
});
置換を削除するために編集、@wireyに感謝
于 2013-01-07T17:03:35.967 に答える