0

以下のコードのスワップ部分は問題なく動作しますが、リセット部分に問題があります。私がやりたいことは、リスト内の画像の 1 つをクリックすると、すべてが _off 画像に戻り、クリックした画像が _over に切り替わることです。

前もって感謝します。

 // Reset 
 $('.show').attr('src').replace("_over","_off");

 // Swap                        
 if($(this).attr("class") == "show") {
    this.src = this.src.replace("_off","_over");
 } else {
    this.src = this.src.replace("_over","_off");
 }
4

2 に答える 2

2

知る必要があるのは、現在クリックされている 'img' 要素がどれであるかだけであるため、画像クリック イベント ハンドラーをバインドするときに実行できます。

$('img').click(function(){ // <-- when img is clicked
     $(this).attr('src','_over'); // <-- change current clicked img            src = _over
     $('img').not(this).attr('src','_off'); // <-- change all other img to     src= _off
});

http://jsfiddle.net/Tkp4E/

于 2012-07-24T15:26:08.677 に答える
0

から返される値.attrを変更しても、要素は変更されません。したがって、次のいずれかです。

showクラスの項目が 1 つしかない場合:

$('.show')[0].src.replace("_over","_off");

複数ある場合は、

$('.show').each( function() {
  this.src.replace("_over","_off");
});
于 2012-07-24T15:23:16.997 に答える