dポイントプレゼントキャンペーン実施中!

最近jQueryを勉強中でして、練習の意味で自分で以下のようなページを作ってみました。

【ページの内容】
犬、猫、鳥の画像ボタンを配置して、クリックすると各ボタンのalt属性をアラート表示する

【実際のhtml】

<div class="header">
<ul class="menu">
<li><a href="index.html" id="btn1"><img src="dog.png" alt="Dog"></a></li>
<li><a href="index.html" id="btn2"><img src="cat.png" alt="Cat"></a></li>
<li><a href="index.html" id="btn3"><img src="bird.png" alt="Bird"></a></li>
</ul>
</div>


【実際のscript】

$(function(){
var btn1 = $('#btn1');
var photo1 = btn1.find('img');
var name1 = photo1.attr('alt');
btn1.click(function(){
alert(name1);
});
var btn2 = $('#btn2');
var photo2 = btn2.find('img');
var name2 = photo2.attr('alt');
btn2.click(function(){
alert(name2);
});
var btn3 = $('#btn3');
var photo3 = btn3.find('img');
var name3 = photo3.attr('alt');
btn3.click(function(){
alert(name3);
});
});


上記で一応やりたいことは再現はできるのですが、scriptが冗長なのでもっと短くしたいです。
しかしどんなスクリプトにすればよいかわかりません。
宜しければアドバイスお願いいたします。

A 回答 (1件)

同じHTML構造の要素に対する処理なので、固有の名称(idなど)を用いずに、クリックされた要素に対する位置関係や属性などを基に記述する方法にすれば、まとめることができると思います。




具体的な記述はいろいろあると思いますが、一例です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">

<script type="text/javascript"

src="http://ajax.googleapis.com/ajax/libs/jquery/1.9. …
<script type="text/javascript">
$(function(){
 $("ul.menu img").click(function(){
  alert($(this).attr("alt"));
  return false;
 });
});
</script>
</head>
<body>

<div class="header">
<ul class="menu">
<li><a href="index.html"><img src="dog.png" alt="Dog"></a></li>
<li><a href="index.html"><img src="cat.png" alt="Cat"></a></li>
<li><a href="index.html"><img src="bird.png" alt="Bird"></a></li>
</ul>
</div>

</body>
</html>
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。

教えてくださったスクリプトで見事に動作しますね!
return文はまだ習得できていませんので、現時点のスレ主の実力では完全に理解できませんが今後の参考にさせていただきます。

非常に勉強になり助かりました。
また質問させていただく機会がありましたら宜しくお願いいたします。

お礼日時:2014/06/19 13:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!