チェックボックスに画像を押してもチェックできる機能と
クリックした後でその画像を差し替える機能を作ったのですが
個別だと両方機能するのですが、両方書くと機能しません
なんとなく、ひとつの処理にまとめなければいけないのはわかるのですが、どうやればよいのかわかりません
https://gist.github.com/833b7bf71869f5cf827c
上記のような機能を一度に処理するにはどうすればよいのか教えてください
また、なぜ個別に書くといけないのかも教えていただければありがたいです。
画像を押してもチェックする機能はlabelを正しく使えばできます。
src切り替えは、checkboxにtoggleするとチェックされなかった(チェックしてチェックが外される?)のでchangeイベントを使いました。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script type='text/javascript'> $(function() { $('.checkbox_area :checkbox').change(function() { var img = $('label[for="' + this.id + '"] img'); if (/kakikae/.test(img.attr('src'))) { var onSrc = img.attr('src').replace('kakikae.png', '.png'); } else { var onSrc = img.attr('src').replace('.png', 'kakikae.png'); } console.log(onSrc) img.attr('src', onSrc); }); }); </script> </head> <body> <div class="checkbox_area"> <input type='checkbox' id='ck1'> <label for='ck1' > <img src='http://test.png'/> </label> <input type='checkbox' id='ck2'> <label for='ck2' > <img src='http://test.png'/> </label> </div> </body> </html>
参考
imgの親の兄弟の中から#labelIdにマッチするものを探してこいの命令です。
2012/07/18 16:51:03siblings()で全ての兄弟。siblings(条件)で絞れます。
#hogeはただのid属性を指定するcssセレクタの文字列です。
http://semooh.jp/jquery/api/traversing/siblings/expr/
すっかり抜けていました。
2012/07/18 17:02:13わざわざ丁寧に教えてくださってありがとうございました