0

「on」(on.png)という名前のボタンと「off」(off.png)という名前のボタンがあります。これらはオン/オフスイッチとして機能するように設計されているため、クリックするともう一方がロードされます。パス(どちらも同じ)を処理したくないので、属性の置換を実行しようとしています。ただし、以下のjQueryコードは何も実行せず、エラーを見つけることができません。どんな助けでも大歓迎です。

$('#btnDining').css({'cursor':'pointer'}).on('click', function(e){
   var src = $(this).attr('src');
   $(this).attr('src', function(i, src){
      return (src.indexOf('off.png')!=-1)?src.replace("_off","_on"):src.replace("_on","_off");
   });
}); // end button click
4

3 に答える 3

1

出来るよ :

$('#btnDining').css({'cursor':'pointer'}).on('click', function(e){
   var src = $(this).attr('src');
   src = (src.indexOf('off.png')!=-1)?src.replace("_off","_on"):src.replace("_on","_off");

   $(this).attr('src', src);
});

そして、私はそれがより読みやすい方法だと思います。

于 2012-06-04T13:30:02.737 に答える
0

あなたは物事を複雑にしすぎています。次のようなものを試してください。

$('#btnDining').css('cursor','pointer').on('click', function(e){
   this.src = /_off/.test(this.src) ? 
        this.src.replace("_off","_on") : 
        this.src.replace("_on","_off");
}); // end button click

また、クラスを切り替えて背景画像を入れ替えるだけで、より効果的でクリーンなコードが得られるため、CSS背景画像の使用を検討してください。

于 2012-06-04T13:35:01.207 に答える
0

外部関数の関数スコープで定義srcしてから、内部関数スコープで再定義します。

$('#btnDining').css({'cursor':'pointer'}).on('click', function(e){
   var src = $(this).attr('src');
   $(this).attr('src', function(i, source){
      return (src.indexOf('off.png')!=-1)?src.replace("_off","_on"):src.replace("_on","_off");
   });
}); // end button click

どちらがどちらかわかりませんsrc。ただし、attr関数で関数変数名を変更すると、問題が解決するはずです。

于 2012-06-04T13:26:51.407 に答える